summaryrefslogtreecommitdiff
path: root/sys/src/lib9p/req.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2014-07-20 22:49:02 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2014-07-20 22:49:02 +0200
commit20b7a19c58c79568424bf40b826b681af86e6ed5 (patch)
tree27be8f481f3f354af38d1d7910d4d348dae2aef2 /sys/src/lib9p/req.c
parentb6039915934ec99e85daa5d4ee964dbda3503352 (diff)
pc64: preserve user extern registers R14 and R15 across syscalls, use Ureg.bp (RARG) for syscall number
the 6c compiler reserves R14 and R15 for extern register variables, which is used by the kernel to hold the m and up pointers. until now, the meaning of R14 and R15 was undefined for userspace and extern register would not work as the kernel trashes R14 and R15 on syscalls. with this change, user extern registers R14 and R15 are zeroed on exec and otherwise preserved across syscalls. so userspace *could* use them for per process variables like the kernel does. use Ureg.bp (RARG) for syscall number instead of Ureg.ax. this is less confusing and mirrors the amd64 calling convention.
Diffstat (limited to 'sys/src/lib9p/req.c')
0 files changed, 0 insertions, 0 deletions