diff --git a/abstract-machine/am/src/x86/nemu/cte.c b/abstract-machine/am/src/x86/nemu/cte.c index 5d7993b7..e52647f3 100644 --- a/abstract-machine/am/src/x86/nemu/cte.c +++ b/abstract-machine/am/src/x86/nemu/cte.c @@ -33,6 +33,8 @@ Context* __am_irq_handle(Context* c) { ev.event = EVENT_IRQ_TIMER; break; case 0x80: + if(c->eax == 9) + printf("Int trap, a[1] == %x\n", c->ebx); ev.event = EVENT_SYSCALL; break; case 0x81: diff --git a/nanos-lite/src/mm.c b/nanos-lite/src/mm.c index dca792b7..5cc5fe4d 100644 --- a/nanos-lite/src/mm.c +++ b/nanos-lite/src/mm.c @@ -29,7 +29,7 @@ void free_page(void *p) { // if brk exceed current->max_brk, we allocate new_page() void map(AddrSpace* as, void* va, void* pa, int prot); int mm_brk(uintptr_t brk) { - printf("brk == %x\n", brk); + printf("mm_brk, brk == %x\n", brk); printf("current->max_brk == %x\n", current->max_brk); if(brk > current->max_brk){ uintptr_t vaddr = current->max_brk; diff --git a/nanos-lite/src/syscall.c b/nanos-lite/src/syscall.c index 04099051..8fc58735 100644 --- a/nanos-lite/src/syscall.c +++ b/nanos-lite/src/syscall.c @@ -41,6 +41,7 @@ void do_syscall(Context* c) { } case SYS_brk: //c->GPRx = 0; + printf("nanos, brk == %x\n", a[1]); c->GPRx = mm_brk(a[1]); break; case SYS_open: diff --git a/navy-apps/libs/libos/src/syscall.c b/navy-apps/libs/libos/src/syscall.c index 4d733d0d..a5da2d50 100644 --- a/navy-apps/libs/libos/src/syscall.c +++ b/navy-apps/libs/libos/src/syscall.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include "syscall.h" @@ -48,6 +49,14 @@ #endif intptr_t _syscall_(intptr_t type, intptr_t a0, intptr_t a1, intptr_t a2) { + if(type == 9){ + char tmp[69] = {}; + sprintf(tmp, "navy, brk _syscall_, brk == %p\n", (char*)a0); + write(1, tmp, sizeof(tmp)); + memset(tmp, 0, 69); + sprintf(tmp, "navy, brk _syscall_, brk == %lu\n", a0); + write(1, tmp, sizeof(tmp)); + } register intptr_t _gpr1 asm(GPR1) = type; register intptr_t _gpr2 asm(GPR2) = a0; register intptr_t _gpr3 asm(GPR3) = a1; @@ -76,14 +85,30 @@ int _write(int fd, void* buf, size_t count) { extern char _end; static char* proc_brk = &_end; void* _sbrk(intptr_t increment) { + char tmp[69] = {}; + sprintf(tmp, "navy, proc_brk == %p\n", proc_brk); + write(1, tmp, sizeof(tmp)); + memset(tmp, 0, 69); + sprintf(tmp, "navy, increment == %p\n", (char*)increment); + write(1, tmp, sizeof(tmp)); + memset(tmp, 0, 69); + sprintf(tmp, "navy, increment == %lu\n", increment); + write(1, tmp, sizeof(tmp)); + memset(tmp, 0, 69); intptr_t pre_brk = (intptr_t)proc_brk; intptr_t req_brk = (intptr_t)proc_brk + increment; + sprintf(tmp, "navy, req_brk == %p\n", (char*)req_brk); + write(1, tmp, sizeof(tmp)); + memset(tmp, 0, 69); + sprintf(tmp, "navy, req_brk == %lu\n", req_brk); + write(1, tmp, sizeof(tmp)); + memset(tmp, 0, 69); // Attention for the argument passed to the system call. if((char *)req_brk < &_end){ return (void*)-1; } - if(!_syscall_(SYS_brk, (intptr_t)&req_brk, 0, 0)){ + if(!_syscall_(SYS_brk, (intptr_t)req_brk, 0, 0)){ proc_brk += increment; return (void*)pre_brk; } else { diff --git a/nemu/src/device/intr.c b/nemu/src/device/intr.c index 223fc4db..a312605e 100644 --- a/nemu/src/device/intr.c +++ b/nemu/src/device/intr.c @@ -1,5 +1,5 @@ #include void dev_raise_intr() { - //cpu.INTR = true; + cpu.INTR = true; } diff --git a/nemu/tools/gen-expr/gen-expr.c b/nemu/tools/gen-expr/gen-expr.c index 5f14356b..228401d1 100644 --- a/nemu/tools/gen-expr/gen-expr.c +++ b/nemu/tools/gen-expr/gen-expr.c @@ -79,9 +79,12 @@ static inline void gen_rand_op() { gen_rand_expr(); break; } - } else { - gen_rand_num(); - } + } + /* + *else { + * gen_rand_num(); + *} + */ buf[strlen(buf)] = '\0'; }