summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2002-02-23 20:54:01 +0000
committerjake <jake@FreeBSD.org>2002-02-23 20:54:01 +0000
commit85b439b6942b3925f5968983589e5ea579f7744a (patch)
treec4c2294f36e8e929ec83ba756f84207c80e8ed9d /sys
parented147b733c78d3ec6fd252331008ac46cb9e27a9 (diff)
downloadFreeBSD-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.S6
-rw-r--r--sys/sparc64/sparc64/support.s6
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) ; \
OpenPOWER on IntegriCloud