summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/include/stdarg.h
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2003-05-27 01:00:12 +0000
committermarcel <marcel@FreeBSD.org>2003-05-27 01:00:12 +0000
commita5442fbe5be19237b7716062eb77cbde2c4fe4cb (patch)
treef8b249faadd31ff6ea0d8d91f281609ae6a492ad /sys/powerpc/include/stdarg.h
parent2e3e224616c11e9dd11191a2aec4764f74a4ff70 (diff)
downloadFreeBSD-src-a5442fbe5be19237b7716062eb77cbde2c4fe4cb.zip
FreeBSD-src-a5442fbe5be19237b7716062eb77cbde2c4fe4cb.tar.gz
Fix fu{byte|word*} and su{byte|word*}:
o If the address was not within user space we jumped to fusufault where we would clear pcb_onfault and return 0. There are two bugs here: 1. We never got to the point where we assigned the address of pcb_onfault to r15, which means that we would clobber some random memory location, including I/O space or ROM. 2. We're supposed to return -1 on error. o Make sure we have proper memory ordering for setting pcb_onfault, doing the memory access to user space and clearing pcb_onfault. For the fu* family of functions this means that we need a mf instruction, because we don't have acquire semantics on stores and release semantics on loads (hence st;ld cannot be ordered without intermediate mf). While here, implement casuptr() so that we are a (small) step closer to supporting libthr and deobfuscate the non-implementation of {f|s}uswintr. Approved by: re@ (blanket)
Diffstat (limited to 'sys/powerpc/include/stdarg.h')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud