diff --git a/lib/ubix/sstart.c b/lib/ubix/sstart.c index 8739da9..ecb0045 100644 --- a/lib/ubix/sstart.c +++ b/lib/ubix/sstart.c @@ -1,23 +1,35 @@ char **environ; const char *__progname = ""; +typedef struct { + int a_type; + int a_val; +} Elf32_Auxinfo; + void _start(unsigned int *ap, ...) { + Elf32_Auxinfo *aux, *auxp; + unsigned int *argcp; int argc; char **argv; char **env; - const char *s; - //argv = ≈ - //argc = *(long *)(void *)(argv - 1); - //argc = *(long *)(void *)(argv - 1); printf("{0x%X}", ap); + + argcp = ap; argc = *ap++; argv = (char **)ap; ap += argc + 1; env = (char **)ap; + environ = (char **)ap; while (*ap++ != 0) ; - environ = env; + aux = (Elf32_Auxinfo *) ap; + + for (auxp = aux; auxp->a_type != 0x0; auxp++) { + printf("TEST"); + } + printf("TEST2"); + // if (env[0] != 0) // printf("env[0]: 0x%X\n",env[0]); diff --git a/sys/i386/trap.c b/sys/i386/trap.c index 971776a..f64e3a9 100644 --- a/sys/i386/trap.c +++ b/sys/i386/trap.c @@ -104,11 +104,14 @@ } } - kprintf("trap_code: %i(0x%X), EIP: 0x%X\n", frame->tf_trapno, frame->tf_trapno, frame->tf_eip); + cr2 = rcr2(); + kprintf("trap_code: %i(0x%X), EIP: 0x%X, CR2: 0x%X\n", frame->tf_trapno, frame->tf_trapno, frame->tf_eip, cr2); + /* switch (trap_code) { case 0xC: cr2 = rcr2(); + kprintf("trap_code: %i(0x%X), EIP: 0x%X, CR2: 0x%X\n", frame->tf_trapno, frame->tf_trapno, frame->tf_eip, cr2); asm("sti"); // Turn Back On Ints! vmm_pageFault(frame, cr2); kprintf("Called page Fault\n");