diff --git a/init/main.c b/init/main.c index dd0db38..8e98260 100644 --- a/init/main.c +++ b/init/main.c @@ -38,26 +38,6 @@ #include #include -#define B_ADAPTORSHIFT 24 -#define B_ADAPTORMASK 0x0f -#define B_ADAPTOR(val) (((val) >> B_ADAPTORSHIFT) & B_ADAPTORMASK) -#define B_CONTROLLERSHIFT 20 -#define B_CONTROLLERMASK 0xf -#define B_CONTROLLER(val) (((val)>>B_CONTROLLERSHIFT) & B_CONTROLLERMASK) -#define B_SLICESHIFT 20 -#define B_SLICEMASK 0xff -#define B_SLICE(val) (((val)>>B_SLICESHIFT) & B_SLICEMASK) -#define B_UNITSHIFT 16 -#define B_UNITMASK 0xf -#define B_UNIT(val) (((val) >> B_UNITSHIFT) & B_UNITMASK) -#define B_PARTITIONSHIFT 8 -#define B_PARTITIONMASK 0xff -#define B_PARTITION(val) (((val) >> B_PARTITIONSHIFT) & B_PARTITIONMASK) -#define B_TYPESHIFT 0 -#define B_TYPEMASK 0xff -#define B_TYPE(val) (((val) >> B_TYPESHIFT) & B_TYPEMASK) - - /***************************************************************************************** Desc: The Kernels Descriptor table: 0x00 - Dummy Entry @@ -94,26 +74,67 @@ * * \param rootdev address of root device structure */ -typedef struct { +struct bootinfo { u_int32_t version; - char *kernel; + u_int32_t kernel; u_int32_t nfs; +#define bi_endcommon bios_used u_int32_t bios_used; u_int32_t bios_geom[8]; u_int32_t bi_size; - u_int32_t mem_sizes; - u_int32_t bios_dev; - } bootinfo; + u_int8_t mem_sizes; + u_int8_t bios_dev; + u_int8_t bi_pad[2]; + u_int32_t bi_basemem; + u_int32_t bi_extmem; + }; -int kmain(bootinfo *binfo) { +#define B_SLICESHIFT 20 +#define B_SLICEMASK 0xff +#define B_SLICE(val) (((val)>>B_SLICESHIFT) & B_SLICEMASK) +#define B_UNITSHIFT 16 +#define B_UNITMASK 0xf +#define B_UNIT(val) (((val) >> B_UNITSHIFT) & B_UNITMASK) +#define B_PARTITIONSHIFT 8 +#define B_PARTITIONMASK 0xff +#define B_PARTITION(val) (((val) >> B_PARTITIONSHIFT) & B_PARTITIONMASK) +#define B_TYPESHIFT 0 +#define B_TYPEMASK 0xff +#define B_TYPE(val) (((val) >> B_TYPESHIFT) & B_TYPEMASK) + + +int kmain(struct bootinfo *binfo) { /* Set up counter for startup routine */ int i = 0x0; u_int32_t *sysTask = 0x0; + int bDev = -1; /* We preform a clearScreen to make the TEXT buffer nice and empty */ screenClear(); - kprintf("[0x%X][%s][0x%X][0x%X][0x%X]\n",binfo->version,binfo->kernel,binfo->bios_used,binfo->bi_size,binfo->bios_dev); + bDev = binfo->bios_dev; + + kprintf("Slice: [%i]\n",B_SLICE(bDev)); + kprintf("Unit: [%i]\n",B_UNIT(bDev)); + kprintf("Partition: [%i]\n",B_PARTITION(bDev)); + kprintf("Type: [%i]\n",B_TYPE(bDev)); + + kprintf("Version: [0x%X]\n",binfo->version); + kprintf("Kernel: [%s]\n",(char *)binfo->kernel); + kprintf("BIOS Used: [0x%X]\n",binfo->bios_used); + kprintf("BI Size: [0x%X]\n",binfo->bi_size); + kprintf("BIOS Dev: [0x%X]\n",binfo->bios_dev); + kprintf("Base Mem: [0x%X]\n",binfo->bi_basemem); + kprintf("Ext Mem: [0x%X]\n",binfo->bi_extmem); + kprintf("GEOM[0]: [0x%X]\n",binfo->bios_geom[0]); + kprintf("GEOM[1]: [0x%X]\n",binfo->bios_geom[1]); + kprintf("GEOM[2]: [0x%X]\n",binfo->bios_geom[2]); + kprintf("GEOM[3]: [0x%X]\n",binfo->bios_geom[3]); + kprintf("GEOM[4]: [0x%X]\n",binfo->bios_geom[4]); + kprintf("GEOM[5]: [0x%X]\n",binfo->bios_geom[5]); + kprintf("GEOM[6]: [0x%X]\n",binfo->bios_geom[6]); + kprintf("GEOM[7]: [0x%X]\n",binfo->bios_geom[7]); + kprintf("End Com: [0x%X]\n",binfo->bi_endcommon); /* Modify src/sys/include/ubixos/init.h to add a startup routine */ for (i = 0x0;i < init_tasksTotal;i++) { diff --git a/init/start.S b/init/start.S index 7303287..ba21105 100644 --- a/init/start.S +++ b/init/start.S @@ -64,7 +64,6 @@ ltr %ax ljmp $0x08,$start_next start_next: - //push 8(%edx) movl 28(%ebp),%ebx push %ebx call kmain