Module Name:    src
Committed By:   ryo
Date:           Mon Sep 14 10:53:02 UTC 2020

Modified Files:
        src/sys/arch/aarch64/aarch64: db_interface.c trap.c
        src/sys/arch/aarch64/include: db_machdep.h

Log Message:
sprinkle LE32TOH to fetch instructions on aarch64eb


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/aarch64/aarch64/db_interface.c
cvs rdiff -u -r1.36 -r1.37 src/sys/arch/aarch64/aarch64/trap.c
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/aarch64/include/db_machdep.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/aarch64/aarch64/db_interface.c
diff -u src/sys/arch/aarch64/aarch64/db_interface.c:1.9 src/sys/arch/aarch64/aarch64/db_interface.c:1.10
--- src/sys/arch/aarch64/aarch64/db_interface.c:1.9	Tue Aug 11 19:46:56 2020
+++ src/sys/arch/aarch64/aarch64/db_interface.c	Mon Sep 14 10:53:02 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: db_interface.c,v 1.9 2020/08/11 19:46:56 skrll Exp $ */
+/* $NetBSD: db_interface.c,v 1.10 2020/09/14 10:53:02 ryo Exp $ */
 
 /*
  * Copyright (c) 2017 Ryo Shimizu <r...@nerv.org>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.9 2020/08/11 19:46:56 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.10 2020/09/14 10:53:02 ryo Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -234,6 +234,8 @@ SignExtend(int bitwidth, uint64_t imm, u
 db_addr_t
 db_branch_taken(db_expr_t inst, db_addr_t pc, db_regs_t *regs)
 {
+	LE32TOH(inst);
+
 #define INSN_FMT_RN(insn)		(((insn) >> 5) & 0x1f)
 #define INSN_FMT_IMM26(insn)	((insn) & 0x03ffffff)
 #define INSN_FMT_IMM19(insn)	(((insn) >> 5) & 0x7ffff)
@@ -267,6 +269,8 @@ db_branch_taken(db_expr_t inst, db_addr_
 bool
 db_inst_unconditional_flow_transfer(db_expr_t inst)
 {
+	LE32TOH(inst);
+
 	if (((inst & 0xfffffc1f) == 0xd65f0000) ||	/* ret xN */
 	    ((inst & 0xfc000000) == 0x94000000) ||	/* bl */
 	    ((inst & 0xfffffc1f) == 0xd63f0000) ||	/* blr */

Index: src/sys/arch/aarch64/aarch64/trap.c
diff -u src/sys/arch/aarch64/aarch64/trap.c:1.36 src/sys/arch/aarch64/aarch64/trap.c:1.37
--- src/sys/arch/aarch64/aarch64/trap.c:1.36	Sun Aug  2 06:58:16 2020
+++ src/sys/arch/aarch64/aarch64/trap.c	Mon Sep 14 10:53:02 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.36 2020/08/02 06:58:16 maxv Exp $ */
+/* $NetBSD: trap.c,v 1.37 2020/09/14 10:53:02 ryo Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.36 2020/08/02 06:58:16 maxv Exp $");
+__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.37 2020/09/14 10:53:02 ryo Exp $");
 
 #include "opt_arm_intr_impl.h"
 #include "opt_compat_netbsd32.h"
@@ -386,6 +386,7 @@ emul_aarch64_insn(struct trapframe *tf)
 		return EMUL_ARM_FAULT;
 	}
 
+	LE32TOH(insn);
 	if ((insn & 0xffffffe0) == 0xd53b0020) {
 		/* mrs x?,ctr_el0 */
 		unsigned int Xt = insn & 31;

Index: src/sys/arch/aarch64/include/db_machdep.h
diff -u src/sys/arch/aarch64/include/db_machdep.h:1.10 src/sys/arch/aarch64/include/db_machdep.h:1.11
--- src/sys/arch/aarch64/include/db_machdep.h:1.10	Wed Jul  8 03:45:13 2020
+++ src/sys/arch/aarch64/include/db_machdep.h	Mon Sep 14 10:53:02 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: db_machdep.h,v 1.10 2020/07/08 03:45:13 ryo Exp $ */
+/* $NetBSD: db_machdep.h,v 1.11 2020/09/14 10:53:02 ryo Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -76,7 +76,11 @@ typedef uintptr_t db_addr_t;
 
 #define BKPT_ADDR(addr)		(addr)
 #define BKPT_SIZE		4
+#ifdef __AARCH64EB__
+#define BKPT_INSN		0x000020d4	/* brk #0 */
+#else
 #define BKPT_INSN		0xd4200000	/* brk #0 */
+#endif
 #define BKPT_SET(insn, addr)	(BKPT_INSN)
 
 typedef struct trapframe db_regs_t;
@@ -99,18 +103,21 @@ int kdb_trap(int, struct trapframe *);
 static inline bool
 inst_return(db_expr_t insn)
 {
+	LE32TOH(insn);
 	return ((insn & 0xfffffc1f) == 0xd65f0000);	/* ret xN */
 }
 
 static inline bool
 inst_trap_return(db_expr_t insn)
 {
+	LE32TOH(insn);
 	return insn == 0xd69f03e0;			/* eret */
 }
 
 static inline bool
 inst_call(db_expr_t insn)
 {
+	LE32TOH(insn);
 	return ((insn & 0xfc000000) == 0x94000000)	/* bl */
 	    || ((insn & 0xfffffc1f) == 0xd63f0000);	/* blr */
 }
@@ -118,6 +125,7 @@ inst_call(db_expr_t insn)
 static inline bool
 inst_load(db_expr_t insn)
 {
+	LE32TOH(insn);
 	return
 	    ((insn & 0xffe00c00) == 0xb8800000) ||	/* ldursw */
 	    /* ldrsw imm{pre,post}idx */
@@ -155,6 +163,7 @@ inst_load(db_expr_t insn)
 static inline bool
 inst_store(db_expr_t insn)
 {
+	LE32TOH(insn);
 	return
 	    ((insn & 0xbfe00000) == 0x88200000) ||	/* stlxp,stxp */
 	    /* stp {pre,post}idx,stp signed,stnp */
@@ -178,6 +187,7 @@ inst_store(db_expr_t insn)
 static inline bool
 inst_branch(db_expr_t insn)
 {
+	LE32TOH(insn);
 	return
 	    ((insn & 0xff000010) == 0x54000000) ||	/* b.cond */
 	    ((insn & 0xfc000000) == 0x14000000) ||	/* b imm */

Reply via email to