diff options
author | jake <jake@FreeBSD.org> | 2002-02-23 20:54:01 +0000 |
---|---|---|
committer | jake <jake@FreeBSD.org> | 2002-02-23 20:54:01 +0000 |
commit | 85b439b6942b3925f5968983589e5ea579f7744a (patch) | |
tree | c4c2294f36e8e929ec83ba756f84207c80e8ed9d /sys | |
parent | ed147b733c78d3ec6fd252331008ac46cb9e27a9 (diff) | |
download | FreeBSD-src-85b439b6942b3925f5968983589e5ea579f7744a.zip FreeBSD-src-85b439b6942b3925f5968983589e5ea579f7744a.tar.gz |
Use PCB_REG instead of loading the pcb from curthread. This fixes a bug
where %g6 could be inconsistent for 1 instruction.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/sparc64/sparc64/support.S | 6 | ||||
-rw-r--r-- | sys/sparc64/sparc64/support.s | 6 |
2 files changed, 4 insertions, 8 deletions
diff --git a/sys/sparc64/sparc64/support.S b/sys/sparc64/sparc64/support.S index a5ffc73..a878cb6 100644 --- a/sys/sparc64/sparc64/support.S +++ b/sys/sparc64/sparc64/support.S @@ -213,12 +213,10 @@ #define CATCH_SETUP(label) \ SET(label, %g2, %g1) ; \ - ldx [PCPU(CURTHREAD)], %g6 ; \ - ldx [%g6 + TD_PCB], %g6 ; \ - stx %g1, [%g6 + PCB_ONFAULT] + stx %g1, [PCB_REG + PCB_ONFAULT] #define CATCH_END() \ - stx %g0, [%g6 + PCB_ONFAULT] + stx %g0, [PCB_REG + PCB_ONFAULT] #define FU_ALIGNED(loader, label) \ CATCH_SETUP(label) ; \ diff --git a/sys/sparc64/sparc64/support.s b/sys/sparc64/sparc64/support.s index a5ffc73..a878cb6 100644 --- a/sys/sparc64/sparc64/support.s +++ b/sys/sparc64/sparc64/support.s @@ -213,12 +213,10 @@ #define CATCH_SETUP(label) \ SET(label, %g2, %g1) ; \ - ldx [PCPU(CURTHREAD)], %g6 ; \ - ldx [%g6 + TD_PCB], %g6 ; \ - stx %g1, [%g6 + PCB_ONFAULT] + stx %g1, [PCB_REG + PCB_ONFAULT] #define CATCH_END() \ - stx %g0, [%g6 + PCB_ONFAULT] + stx %g0, [PCB_REG + PCB_ONFAULT] #define FU_ALIGNED(loader, label) \ CATCH_SETUP(label) ; \ |