diff --git a/sys/powerpc/booke/pmap.c b/sys/powerpc/booke/pmap.c index 1ff0ad83f80..2e6394cb765 100644 --- a/sys/powerpc/booke/pmap.c +++ b/sys/powerpc/booke/pmap.c @@ -410,7 +410,10 @@ static struct pmap_funcs mmu_booke_methods = { .kremove = mmu_booke_kremove, .unmapdev = mmu_booke_unmapdev, .change_attr = mmu_booke_change_attr, +#ifndef __powerpc64__ + /* 32-bit booke does not have direct access to user pointers. */ .map_user_ptr = mmu_booke_map_user_ptr, +#endif .decode_kernel_ptr = mmu_booke_decode_kernel_ptr, /* dumpsys() support */ diff --git a/sys/powerpc/include/mmuvar.h b/sys/powerpc/include/mmuvar.h index 3a79c81082b..7569d4ccccf 100644 --- a/sys/powerpc/include/mmuvar.h +++ b/sys/powerpc/include/mmuvar.h @@ -198,7 +198,6 @@ extern mmu_t mmu_obj; if (f != NULL) break; \ mmu = mmu->base; \ } while (mmu != NULL); \ - printf("Resolved %s to %p\n", #func, f); \ f;}) diff --git a/sys/powerpc/powerpc/copyinout.c b/sys/powerpc/powerpc/copyinout.c index 29b724c8ab8..ee8000b4206 100644 --- a/sys/powerpc/powerpc/copyinout.c +++ b/sys/powerpc/powerpc/copyinout.c @@ -86,16 +86,21 @@ int suword32_remap(volatile void *addr, int word); int suword32_direct(volatile void *addr, int word); int suword_remap(volatile void *addr, long word); int suword_direct(volatile void *addr, long word); +#ifdef __powerpc64__ int suword64_remap(volatile void *addr, int64_t word); int suword64_direct(volatile void *addr, int64_t word); +#endif + int fubyte_remap(volatile const void *addr); int fubyte_direct(volatile const void *addr); int fuword16_remap(volatile const void *addr); int fuword16_direct(volatile const void *addr); int fueword32_remap(volatile const void *addr, int32_t *val); int fueword32_direct(volatile const void *addr, int32_t *val); +#ifdef __powerpc64__ int fueword64_remap(volatile const void *addr, int64_t *val); int fueword64_direct(volatile const void *addr, int64_t *val); +#endif int fueword_remap(volatile const void *addr, long *val); int fueword_direct(volatile const void *addr, long *val); int casueword32_remap(volatile uint32_t *addr, uint32_t old, uint32_t *oldvalp, @@ -120,11 +125,15 @@ DEFINE_COPY_FUNC(int, copyin, (const void *, void *, size_t)) DEFINE_COPY_FUNC(int, copyout, (const void *, void *, size_t)) DEFINE_COPY_FUNC(int, suword, (volatile void *, long)) DEFINE_COPY_FUNC(int, suword32, (volatile void *, int)) +#ifdef __powerpc64__ DEFINE_COPY_FUNC(int, suword64, (volatile void *, int64_t)) +#endif DEFINE_COPY_FUNC(int, fubyte, (volatile const void *)) DEFINE_COPY_FUNC(int, fuword16, (volatile const void *)) DEFINE_COPY_FUNC(int, fueword32, (volatile const void *, int32_t *)) +#ifdef __powerpc64__ DEFINE_COPY_FUNC(int, fueword64, (volatile const void *, int64_t *)) +#endif DEFINE_COPY_FUNC(int, fueword, (volatile const void *, long *)) DEFINE_COPY_FUNC(int, casueword32, (volatile uint32_t *, uint32_t, uint32_t *, uint32_t)) @@ -298,6 +307,12 @@ suword32_remap(volatile void *addr, int word) td->td_pcb->pcb_onfault = NULL; return (0); } +#else +int +suword32_remap(volatile void *addr, int32_t word) +{ + return (suword_remap(addr, (long)word)); +} #endif int @@ -334,12 +349,6 @@ suword64_remap(volatile void *addr, int64_t word) { return (suword_remap(addr, (long)word)); } -#else -int -suword32(volatile void *addr, int32_t word) -{ - return (suword(addr, (long)word)); -} #endif int @@ -534,7 +543,7 @@ FUNCNAME(casueword32)(volatile uint32_t *addr, uint32_t old, uint32_t *oldvalp, #ifndef __powerpc64__ int -casueword(volatile u_long *addr, u_long old, u_long *oldvalp, u_long new) +casueword_remap(volatile u_long *addr, u_long old, u_long *oldvalp, u_long new) { return (casueword32((volatile uint32_t *)addr, old, diff --git a/sys/powerpc/powerpc/support.S b/sys/powerpc/powerpc/support.S index a24519cde9f..22c7cb0ff9f 100644 --- a/sys/powerpc/powerpc/support.S +++ b/sys/powerpc/powerpc/support.S @@ -312,7 +312,7 @@ ENTRY_DIRECT(subyte) EPILOGUE #ifndef __powerpc64__ -ENTRY(suword) +ENTRY_DIRECT(suword) PROLOGUE SET_FUSUFAULT(%r3, %r7) stw %r4, 0(%r3) @@ -357,10 +357,10 @@ ENTRY_DIRECT(fuword16) EPILOGUE #ifndef __powerpc64__ -ENTRY(fueword) +ENTRY_DIRECT(fueword) PROLOGUE SET_FUSUFAULT(%r3, %r7) - lwz %r0,, 0(%r3) + lwz %r0, 0(%r3) stw %r0, 0(%r4) CLEAR_FAULT(%r7) EPILOGUE @@ -439,6 +439,9 @@ ENTRY_DIRECT(casueword) ENTRY_DIRECT(casueword64) CASUEWORD64(%r3, %r7) +#else +ENTRY_DIRECT(casueword) + CASUEWORD32(%r3, %r7) #endif ENTRY(fusufault)