#if BIOS
-unsigned char cdspec[25];
-void bootcdinfo(u32_t, int *, int drive);
-
void boot(void)
/* Load Minix and start it, among other things. */
{
# define VMUM_LEN m1_i1
#define VM_ALLOCMEM (VM_RQ_BASE+18)
-# define VMAM_CLICKS m1_p1
+# define VMAM_BYTES m1_p1
# define VMAM_MEMBASE m1_i1
/* Calls from VFS. */
/*===========================================================================*
* vm_allocmem *
*===========================================================================*/
-PUBLIC int vm_allocmem(phys_clicks clicks, phys_clicks *retmembase)
+PUBLIC int vm_allocmem(phys_clicks bytes, phys_clicks *retmembase)
{
message m;
int result;
- m.VMAM_CLICKS = clicks;
+ m.VMAM_BYTES = bytes;
result = _taskcall(VM_PROC_NR, VM_ALLOCMEM, &m);
if(result == OK)
*retmembase = m.VMAM_MEMBASE;
r = vm_allocmem(m_in.memsize, &retmembase);
if(r == OK)
mp->mp_reply.membase = retmembase;
+#if 0
printf("PM: do_allocmem: %d\n", r);
+#endif
return r;
}
*===========================================================================*/
PUBLIC int do_allocmem(message *m)
{
- phys_clicks mem;
+ phys_clicks mem, clicks;
- if((mem=ALLOC_MEM((phys_clicks) m->VMAM_CLICKS, PAF_CLEAR)) == NO_MEM) {
+ clicks = 1 + ((vir_bytes)m->VMAM_BYTES / CLICK_SIZE);
+
+ if((mem=ALLOC_MEM(clicks, PAF_CLEAR)) == NO_MEM) {
return ENOMEM;
}
- m->VMAM_MEMBASE = mem;
+ m->VMAM_MEMBASE = CLICK2ABS(mem);
+#if 0
printf("VM: do_allocmem: 0x%lx clicks OK at 0x%lx\n", m->VMAM_CLICKS, mem);
+#endif
return OK;
}