diff options
| author | Justin Hibbits <jhibbits@FreeBSD.org> | 2013-08-19 05:10:46 +0000 |
|---|---|---|
| committer | Justin Hibbits <jhibbits@FreeBSD.org> | 2013-08-19 05:10:46 +0000 |
| commit | cc117e2773f92c1988ac83f86b7f568f79bb7889 (patch) | |
| tree | a2b9c87ea0adc2a06d1d3aa6a6607f43cdabc510 | |
| parent | 25180adf0ddeb0bc72e0f123c059cf6e4f0d05c7 (diff) | |
Notes
| -rw-r--r-- | sys/cddl/dev/dtrace/powerpc/dtrace_asm.S | 11 | ||||
| -rw-r--r-- | sys/cddl/dev/dtrace/powerpc/dtrace_isa.c | 4 | ||||
| -rw-r--r-- | sys/modules/dtrace/Makefile | 2 |
3 files changed, 16 insertions, 1 deletions
diff --git a/sys/cddl/dev/dtrace/powerpc/dtrace_asm.S b/sys/cddl/dev/dtrace/powerpc/dtrace_asm.S index 810517f4af16..79079e5e9c17 100644 --- a/sys/cddl/dev/dtrace/powerpc/dtrace_asm.S +++ b/sys/cddl/dev/dtrace/powerpc/dtrace_asm.S @@ -50,6 +50,7 @@ void dtrace_membar_producer(void) */ ASENTRY_NOPROF(dtrace_membar_producer) + sync blr END(dtrace_membar_producer) @@ -57,6 +58,7 @@ END(dtrace_membar_producer) void dtrace_membar_consumer(void) */ ASENTRY_NOPROF(dtrace_membar_consumer) + isync blr END(dtrace_membar_consumer) @@ -97,12 +99,21 @@ void * dtrace_casptr(void *target, void *cmp, void *new) */ ASENTRY_NOPROF(dtrace_casptr) +#ifdef __powerpc64__ +1: + ldarx %r0,0,%r3 + cmpd %r4,%r0 + bne 2f + stdcx. %r5,0,%r3 + bne 1b +#else 1: lwarx %r0,0,%r3 cmpw %r4,%r0 bne 2f stwcx. %r5,0,%r3 bne 1b +#endif 2: mr %r3,%r0 blr END(dtrace_casptr) diff --git a/sys/cddl/dev/dtrace/powerpc/dtrace_isa.c b/sys/cddl/dev/dtrace/powerpc/dtrace_isa.c index a68ee657f005..3793adf631c5 100644 --- a/sys/cddl/dev/dtrace/powerpc/dtrace_isa.c +++ b/sys/cddl/dev/dtrace/powerpc/dtrace_isa.c @@ -80,7 +80,11 @@ dtrace_getpcstack(pc_t *pcstack, int pcstack_limit, int aframes, if (!INKERNEL((long) sp)) break; +#ifdef __powerpc64__ + callpc = *(uintptr_t *)(sp + RETURN_OFFSET64); +#else callpc = *(uintptr_t *)(sp + RETURN_OFFSET); +#endif if (!INKERNEL(callpc)) break; diff --git a/sys/modules/dtrace/Makefile b/sys/modules/dtrace/Makefile index f1f1f1eaed84..2fa7ecd4eae1 100644 --- a/sys/modules/dtrace/Makefile +++ b/sys/modules/dtrace/Makefile @@ -22,7 +22,7 @@ SUBDIR+= fasttrap fbt systrace_linux32 .if ${MACHINE_CPUARCH} == "powerpc" SUBDIR+= fbt .endif -.if ${MACHINE_CPUARCH} == "amd64" +.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_ARCH} == "powerpc64" SUBDIR+= systrace_freebsd32 .endif |
