summaryrefslogtreecommitdiffstats
path: root/lib/libc/sparc64
diff options
context:
space:
mode:
authortmm <tmm@FreeBSD.org>2002-03-11 02:53:03 +0000
committertmm <tmm@FreeBSD.org>2002-03-11 02:53:03 +0000
commit9d0a7ccb856a0611e5f9953cdce30b103e77ab21 (patch)
treebdee8d436dd5c2d1c1c16eedcc36370311f5f401 /lib/libc/sparc64
parent76fa25cebd9b695967c5095607c81a276b5730b3 (diff)
downloadFreeBSD-src-9d0a7ccb856a0611e5f9953cdce30b103e77ab21.zip
FreeBSD-src-9d0a7ccb856a0611e5f9953cdce30b103e77ab21.tar.gz
Save/restore the %y register around calls to the C user trap handler;
gcc emits the deprecated sparc v8 instructions that use this register when optimizing for UltraSparc machines because they are apparetly faster then their v9 counterpars there.
Diffstat (limited to 'lib/libc/sparc64')
-rw-r--r--lib/libc/sparc64/sys/__sparc_utrap_gen.S4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/libc/sparc64/sys/__sparc_utrap_gen.S b/lib/libc/sparc64/sys/__sparc_utrap_gen.S
index 3a96248..a9f4e60 100644
--- a/lib/libc/sparc64/sys/__sparc_utrap_gen.S
+++ b/lib/libc/sparc64/sys/__sparc_utrap_gen.S
@@ -70,9 +70,13 @@ ENTRY(__sparc_utrap_gen)
stx %i6, [%sp + SPOFF + CCFSZ + UF_O6]
stx %i7, [%sp + SPOFF + CCFSZ + UF_O7]
+ rd %y, %l6
+
call __sparc_utrap
add %sp, SPOFF + CCFSZ, %o0
+ wr %l6, 0, %y
+
ldx [%sp + SPOFF + CCFSZ + UF_G1], %g1
ldx [%sp + SPOFF + CCFSZ + UF_G2], %g2
ldx [%sp + SPOFF + CCFSZ + UF_G3], %g3
OpenPOWER on IntegriCloud