diff options
author | tmm <tmm@FreeBSD.org> | 2002-03-11 02:53:03 +0000 |
---|---|---|
committer | tmm <tmm@FreeBSD.org> | 2002-03-11 02:53:03 +0000 |
commit | 9d0a7ccb856a0611e5f9953cdce30b103e77ab21 (patch) | |
tree | bdee8d436dd5c2d1c1c16eedcc36370311f5f401 /lib/libc/sparc64 | |
parent | 76fa25cebd9b695967c5095607c81a276b5730b3 (diff) | |
download | FreeBSD-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.S | 4 |
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 |