summaryrefslogtreecommitdiffstats
path: root/sys/powerpc
diff options
context:
space:
mode:
authorjhibbits <jhibbits@FreeBSD.org>2017-05-20 05:12:32 +0000
committerjhibbits <jhibbits@FreeBSD.org>2017-05-20 05:12:32 +0000
commit78abf039aa297d9b0021f82c669f194c4bfc611e (patch)
tree79811f5b0629101641348734377be5eee7881ea6 /sys/powerpc
parentf4f7900bc18788394c1004abc37d2fb303297e06 (diff)
downloadFreeBSD-src-78abf039aa297d9b0021f82c669f194c4bfc611e.zip
FreeBSD-src-78abf039aa297d9b0021f82c669f194c4bfc611e.tar.gz
MFC r314370,r318130,r318167:
DTrace related fixes for PowerPC. r314370: Unbreak kernel breakpoints, broken for ~4 years now r318130: Fix the encoded instruction for FBT traps on powerpc r318167: Fix stack tracing in dtrace for powerpc
Diffstat (limited to 'sys/powerpc')
-rw-r--r--sys/powerpc/booke/trap_subr.S12
-rw-r--r--sys/powerpc/include/trap.h2
2 files changed, 3 insertions, 11 deletions
diff --git a/sys/powerpc/booke/trap_subr.S b/sys/powerpc/booke/trap_subr.S
index 8737dba..ebaa656 100644
--- a/sys/powerpc/booke/trap_subr.S
+++ b/sys/powerpc/booke/trap_subr.S
@@ -803,12 +803,12 @@ INTERRUPT(int_debug)
lwz %r4,0(%r5) /* interrupt_vector_base in r4 */
add %r4,%r4,%r5
cmplw cr0, %r3, %r4
- blt 1f
+ blt trap_common
lwz %r4,4(%r5) /* interrupt_vector_top in r4 */
add %r4,%r4,%r5
addi %r4,%r4,4
cmplw cr0, %r3, %r4
- bge 1f
+ bge trap_common
/* Disable single-stepping for the interrupt handlers. */
lwz %r3, FRAME_SRR1+8(%r1);
rlwinm %r3, %r3, 0, 23, 21
@@ -820,14 +820,6 @@ INTERRUPT(int_debug)
lwz %r4, (PC_BOOKE_CRITSAVE+CPUSAVE_SRR1+8)(%r4);
mtspr SPR_SRR1, %r4
b 9f
-1:
- addi %r3, %r1, 8
- bl CNAME(trap)
- /*
- * Handle ASTs, needed for proper support of single-stepping.
- * We actually need to return to the process with an rfi.
- */
- b trapexit
9:
FRAME_LEAVE(SPR_CSRR0, SPR_CSRR1)
rfci
diff --git a/sys/powerpc/include/trap.h b/sys/powerpc/include/trap.h
index 81c40c9..07c70fa 100644
--- a/sys/powerpc/include/trap.h
+++ b/sys/powerpc/include/trap.h
@@ -125,7 +125,7 @@
#define EXC_PGM_TRAP (1UL << 17)
/* DTrace trap opcode. */
-#define EXC_DTRACE 0x7c810808
+#define EXC_DTRACE 0x7ffff808
/* Magic pointer to store TOC base and other info for trap handlers on ppc64 */
#define TRAP_GENTRAP 0x1f0
OpenPOWER on IntegriCloud