From e9e69def589375c3d0e51b532268b27d3d403bbf Mon Sep 17 00:00:00 2001 From: Karoline Knoth Date: Thu, 21 Jun 2012 15:19:08 +0200 Subject: use local stack pointer inside syscall_handler --- userprog/syscall.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/userprog/syscall.c b/userprog/syscall.c index 71aba5c..7f8c397 100644 --- a/userprog/syscall.c +++ b/userprog/syscall.c @@ -201,10 +201,10 @@ syscall_handler (struct intr_frame *f) handler* fp; bool segfault = false; int result; - syscall_sp = f->esp; + void *sp = f->esp; /* The system call number and the arguments are on the stack */ - if (! copy_from_user (&syscall_nr,syscall_sp)) + if (! copy_from_user (&syscall_nr,sp)) goto fail; switch (syscall_nr) { case SYS_HALT: fp = syscall_halt; break; @@ -225,8 +225,9 @@ syscall_handler (struct intr_frame *f) default: goto fail; } - result = fp (syscall_sp, &segfault); - if (segfault) + syscall_sp = sp; + result = fp (sp, &segfault); + if (segfault) goto fail; f->eax = result; return; -- cgit v1.2.3