X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ftests%2Fuserprog%2Fsc-bad-arg.c;h=aee48b0e15ee0ae21c5eb16be0505b97e1f8d7e6;hb=a96d2712f349629d7fe2186e2620f1704cbdee50;hp=2df966f3e623b8d03968652333d66001dace358a;hpb=615bf3b3d2a8573ed6fb9ddc0055745e163ac999;p=pintos-anon diff --git a/src/tests/userprog/sc-bad-arg.c b/src/tests/userprog/sc-bad-arg.c index 2df966f..aee48b0 100644 --- a/src/tests/userprog/sc-bad-arg.c +++ b/src/tests/userprog/sc-bad-arg.c @@ -1,3 +1,9 @@ +/* Sticks a system call number (SYS_EXIT) at the very top of the + stack, then invokes a system call with the stack pointer + (%esp) set to its address. The process must be terminated + with -1 exit code because the argument to the system call + would be above the top of the user address space. */ + #include #include "tests/lib.h" #include "tests/main.h" @@ -5,7 +11,7 @@ void test_main (void) { - asm volatile ("mov %%esp, 0xbffffffc; mov [dword ptr %%esp], %0; int 0x30" - :: "i" (SYS_exit)); + asm volatile ("movl $0xbffffffc, %%esp; movl %0, (%%esp); int $0x30" + :: "i" (SYS_EXIT)); fail ("should have called exit(-1)"); }