nova: fix syscall bindings for 32bit

The bindings for 32bit did not consider that in the syscall_3 function
edx changes due to the assembly instructions and that in the syscall_4
function edx and ecx change. So, the compiler wrongly assumed that the
content of these registers stayed unchanged.

Fixes #1447
This commit is contained in:
Alexander Boettcher 2015-03-12 16:49:06 +01:00 committed by Christian Helmuth
parent e664c979b2
commit 2a4b67f90b
1 changed files with 4 additions and 4 deletions

View File

@ -120,8 +120,8 @@ namespace Nova {
" sysenter;" " sysenter;"
"1:" "1:"
" pop %%ebx;" " pop %%ebx;"
: "+a" (status) : "+a" (status), "+d" (p3)
: "D" (p1), "S" (p2), "d" (p3) : "D" (p1), "S" (p2)
: "ecx"); : "ecx");
return status; return status;
} }
@ -149,8 +149,8 @@ namespace Nova {
" pop %%ebx;" " pop %%ebx;"
" pop %%ebp;" " pop %%ebp;"
: "+a" (status) : "+a" (status), "+c" (p3), "+d" (p4)
: "D" (p1), "S" (p2), "c" (p3), "d" (p4) : "D" (p1), "S" (p2)
: "memory"); : "memory");
return status; return status;
} }