X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ftests%2Fuserprog%2Fsc-bad-arg.c;h=0b512a0e59797e0e7e3ae006d44dea83710d2508;hb=a03618133f7df0954802a470a4bee7674f7aed45;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..0b512a0 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)"); }