From e407e1933844bdb071acece6ca5b4c42159a3a68 Mon Sep 17 00:00:00 2001 From: Zihao Yu Date: Thu, 3 Aug 2017 23:29:43 +0800 Subject: [PATCH] am,x86-nemu,asye,irq_handle: save the return value of syscall --- am/arch/x86-nemu/src/asye.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/am/arch/x86-nemu/src/asye.c b/am/arch/x86-nemu/src/asye.c index 47e8034e..57e21cfd 100644 --- a/am/arch/x86-nemu/src/asye.c +++ b/am/arch/x86-nemu/src/asye.c @@ -13,11 +13,11 @@ uintptr_t irq_handle(_RegSet *r) { _RegSet *next = r; if (H) { _Event ev; + intptr_t args[4]; switch (r->irq) { case 32: ev.event = _EVENT_IRQ_TIME; break; case 0x80: { ev.event = _EVENT_SYSCALL; - intptr_t args[4]; args[0] = r->eax; args[1] = r->ebx; args[2] = r->ecx; @@ -30,6 +30,10 @@ uintptr_t irq_handle(_RegSet *r) { } next = H(ev, r); + if (ev.event == _EVENT_SYSCALL) { + r->eax = args[0]; + } + if (next == NULL) { next = r; }