diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-01-20 00:47:55 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-01-20 00:47:55 +0100 |
commit | 6c2e983d328874ea41cb35bacb510bf2709a229f (patch) | |
tree | e2a5c596a3fcd1af3ed792494b78f2d503911b44 /sys/src/9/pc/trap.c | |
parent | b99ecee6cd8c7c9fce1ff2cfa56d5a6807a0fc7c (diff) |
kernel: apply uintptr for ulong when a pointer is stored
this change is in preparation for amd64. the systab calling
convention was also changed to return uintptr (as segattach
returns a pointer) and the arguments are now passed as
va_list which handles amd64 arguments properly (all arguments
are passed in 64bit quantities on the stack, tho the upper
part will not be initialized when the element is smaller
than 8 bytes).
this is partial. xalloc needs to be converted in the future.
Diffstat (limited to 'sys/src/9/pc/trap.c')
-rw-r--r-- | sys/src/9/pc/trap.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/sys/src/9/pc/trap.c b/sys/src/9/pc/trap.c index 867767198..c8a43bbb5 100644 --- a/sys/src/9/pc/trap.c +++ b/sys/src/9/pc/trap.c @@ -760,8 +760,7 @@ syscall(Ureg* ureg) error(Ebadarg); } up->psstate = sysctab[scallnr]; - - ret = systab[scallnr](up->s.args); + ret = systab[scallnr]((va_list)up->s.args); poperror(); }else{ /* failure: save the error buffer for errstr */ @@ -975,8 +974,8 @@ if(0) print("%s %lud: noted %.8lux %.8lux\n", } } -long -execregs(ulong entry, ulong ssize, ulong nargs) +uintptr +execregs(uintptr entry, ulong ssize, ulong nargs) { ulong *sp; Ureg *ureg; @@ -996,7 +995,7 @@ execregs(ulong entry, ulong ssize, ulong nargs) /* * return the userpc the last exception happened at */ -ulong +uintptr userpc(void) { Ureg *ureg; |