diff --git a/sys/arch/arm/arm/disassem.c b/sys/arch/arm/arm/disassem.c index c12efd8e968a..e9cd485f5b4b 100644 --- a/sys/arch/arm/arm/disassem.c +++ b/sys/arch/arm/arm/disassem.c @@ -1,4 +1,4 @@ -/* $NetBSD: disassem.c,v 1.41 2019/10/24 18:34:22 christos Exp $ */ +/* $NetBSD: disassem.c,v 1.42 2020/12/01 02:48:28 rin Exp $ */ /* * Copyright (c) 1996 Mark Brinicombe. @@ -49,7 +49,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: disassem.c,v 1.41 2019/10/24 18:34:22 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: disassem.c,v 1.42 2020/12/01 02:48:28 rin Exp $"); #include @@ -447,7 +447,7 @@ disasm(const disasm_interface_t *di, vaddr_t loc, int altfmt) fmt = 0; matchp = 0; insn = di->di_readword(loc); -#if defined(__ARMEB__) && defined(CPU_ARMV7) +#ifdef _ARM_ARCH_BE8 insn = bswap32(insn); #endif char neonfmt = 'd'; diff --git a/sys/arch/arm/arm32/db_interface.c b/sys/arch/arm/arm32/db_interface.c index b455f60fa3ea..5f67f091d0b8 100644 --- a/sys/arch/arm/arm32/db_interface.c +++ b/sys/arch/arm/arm32/db_interface.c @@ -1,4 +1,4 @@ -/* $NetBSD: db_interface.c,v 1.61 2020/06/20 15:45:22 skrll Exp $ */ +/* $NetBSD: db_interface.c,v 1.62 2020/12/01 02:48:29 rin Exp $ */ /* * Copyright (c) 1996 Scott K. Stevens @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.61 2020/06/20 15:45:22 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.62 2020/12/01 02:48:29 rin Exp $"); #include "opt_ddb.h" #include "opt_kgdb.h" @@ -303,10 +303,10 @@ db_write_bytes(vaddr_t addr, size_t size, const char *data) void cpu_Debugger(void) { -#if _BYTE_ORDER == _LITTLE_ENDIAN - __asm(".word 0xe7ffffff"); -#else +#ifdef _ARM_ARCH_BE8 __asm(".word 0xffffffe7"); +#else + __asm(".word 0xe7ffffff"); #endif } diff --git a/sys/arch/arm/include/db_machdep.h b/sys/arch/arm/include/db_machdep.h index e361593330a5..94eedc94aebf 100644 --- a/sys/arch/arm/include/db_machdep.h +++ b/sys/arch/arm/include/db_machdep.h @@ -1,4 +1,4 @@ -/* $NetBSD: db_machdep.h,v 1.27 2018/04/01 04:35:04 ryo Exp $ */ +/* $NetBSD: db_machdep.h,v 1.28 2020/12/01 02:48:29 rin Exp $ */ /* * Copyright (c) 1996 Scott K Stevens @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -70,7 +71,11 @@ extern db_regs_t *ddb_regp; #define BKPT_INST (GDB5_BREAKPOINT) #endif #define BKPT_SIZE (INSN_SIZE) /* size of breakpoint inst */ +#ifdef __ARM_ARCH_BE8 +#define BKPT_SET(inst, addr) (bswap32(BKPT_INST)) +#else #define BKPT_SET(inst, addr) (BKPT_INST) +#endif /*#define FIXUP_PC_AFTER_BREAK(regs) ((regs)->tf_pc -= BKPT_SIZE)*/ diff --git a/sys/arch/arm/include/locore.h b/sys/arch/arm/include/locore.h index 768bb372629b..892df57a6e53 100644 --- a/sys/arch/arm/include/locore.h +++ b/sys/arch/arm/include/locore.h @@ -1,4 +1,4 @@ -/* $NetBSD: locore.h,v 1.34 2020/10/30 18:54:36 skrll Exp $ */ +/* $NetBSD: locore.h,v 1.35 2020/12/01 02:48:29 rin Exp $ */ /* * Copyright (c) 1994-1996 Mark Brinicombe. @@ -202,7 +202,7 @@ read_insn(vaddr_t va, bool user_p) } else { insn = *(const uint32_t *)va; } -#if defined(__ARMEB__) && defined(_ARM_ARCH_7) +#ifdef _ARM_ARCH_BE8 insn = bswap32(insn); #endif return insn; @@ -232,7 +232,7 @@ read_thumb_insn(vaddr_t va, bool user_p) } else { insn = *(const uint16_t *)va; } -#if defined(__ARMEB__) && defined(_ARM_ARCH_7) +#ifdef _ARM_ARCH_BE8 insn = bswap16(insn); #endif return insn; diff --git a/sys/arch/arm/include/ptrace.h b/sys/arch/arm/include/ptrace.h index 7d9dfa4994da..ea30b38a9adc 100644 --- a/sys/arch/arm/include/ptrace.h +++ b/sys/arch/arm/include/ptrace.h @@ -1,4 +1,4 @@ -/* $NetBSD: ptrace.h,v 1.15 2019/06/18 21:18:12 kamil Exp $ */ +/* $NetBSD: ptrace.h,v 1.16 2020/12/01 02:48:29 rin Exp $ */ /* * Copyright (c) 1995 Frank Lancaster @@ -31,6 +31,8 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include + /* * arm-dependent ptrace definitions */ @@ -67,12 +69,17 @@ #define PTRACE_ILLEGAL_ASM __asm __volatile ("udf #0" : : : "memory") -#ifdef __ARMEB__ +#if defined(__ARMEL__) || defined(_ARM_ARCH_BE8) #define PTRACE_BREAKPOINT ((const uint8_t[]) { 0xfe, 0xde, 0xff, 0xe7 }) -#define PTRACE_BREAKPOINT_INSN 0xfedeffe7 #else #define PTRACE_BREAKPOINT ((const uint8_t[]) { 0xe7, 0xff, 0xde, 0xfe }) +#endif + +#ifdef _ARM_ARCH_BE8 +#define PTRACE_BREAKPOINT_INSN 0xfedeffe7 +#else #define PTRACE_BREAKPOINT_INSN 0xe7ffdefe #endif + #define PTRACE_BREAKPOINT_ASM __asm __volatile (".word " ___STRING(PTRACE_BREAKPOINT_INSN) ) #define PTRACE_BREAKPOINT_SIZE 4 diff --git a/sys/arch/arm/include/trap.h b/sys/arch/arm/include/trap.h index c1d4983376af..d207d932d224 100644 --- a/sys/arch/arm/include/trap.h +++ b/sys/arch/arm/include/trap.h @@ -1,4 +1,4 @@ -/* $NetBSD: trap.h,v 1.9 2014/03/15 05:54:20 ozaki-r Exp $ */ +/* $NetBSD: trap.h,v 1.10 2020/12/01 02:48:29 rin Exp $ */ /* * Copyright (c) 1995 Mark Brinicombe. @@ -38,6 +38,8 @@ * Various trap definitions */ +#include + /* * Instructions used for breakpoints. * @@ -70,7 +72,11 @@ #define DTRACE_BREAKPOINT_MASK 0xfffffff0 #define DTRACE_IS_BREAKPOINT(insn) ((insn & DTRACE_BREAKPOINT_MASK) == DTRACE_BREAKPOINT) +#ifdef _ARM_ARCH_BE8 +#define KBPT_ASM ".word 0xfedeffe7" +#else #define KBPT_ASM ".word 0xe7ffdefe" +#endif #define USER_BREAKPOINT GDB_BREAKPOINT