Page MenuHomeFreeBSD

D38899.id118280.diff
No OneTemporary

D38899.id118280.diff

diff --git a/sys/arm64/arm64/disassem.c b/sys/arm64/arm64/disassem.c
--- a/sys/arm64/arm64/disassem.c
+++ b/sys/arm64/arm64/disassem.c
@@ -28,11 +28,13 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
-#include <sys/param.h>
+#include <sys/param.h>
#include <sys/systm.h>
-#include <machine/disassem.h>
+
#include <machine/armreg.h>
+#include <machine/disassem.h>
+
#include <ddb/ddb.h>
#define ARM64_MAX_TOKEN_LEN 8
@@ -82,12 +84,22 @@
* Define generic types for instruction printing.
*/
enum arm64_format_type {
- TYPE_01, /* OP <RD>, <RN>, <RM>{, <shift [LSL, LSR, ASR]> #<imm>} SF32/64
- OP <RD>, <RN>, #<imm>{, <shift [0, 12]>} SF32/64 */
- TYPE_02, /* OP <RT>, [<RN>, #<imm>]{!}] SF32/64
- OP <RT>, [<RN>], #<imm>{!} SF32/64
- OP <RT>, <RN>, <RM> {, EXTEND AMOUNT } */
- TYPE_03, /* OP <RT>, #imm SF32/64 */
+
+ /*
+ * OP <RD>, <RN>, <RM>{, <shift [LSL, LSR, ASR]> #imm} SF32/64
+ * OP <RD>, <RN>, #<imm>{, <shift [0, 12]>} SF32/64
+ */
+ TYPE_01,
+
+ /*
+ * OP <RT>, [<RN>, #<imm>]{!} SF32/64
+ * OP <RT>, [<RN>], #<imm>{!} SF32/64
+ * OP <RT>, <RN>, <RM> {, EXTEND AMOUNT }
+ */
+ TYPE_02,
+
+ /* OP <RT>, #imm SF32/64 */
+ TYPE_03,
};
/*
@@ -101,8 +113,8 @@
* tokens - array of tokens (operands) inside instruction
*/
struct arm64_insn {
- char* name;
- char* format;
+ char *name;
+ char *format;
enum arm64_format_type type;
uint64_t special_ops;
uint32_t mask;
@@ -202,7 +214,7 @@
*/
a = (INSN_SIZE * NBBY) - 1;
while (*format != '\0' && (a >= 0)) {
- switch(*format) {
+ switch (*format) {
case '0':
/* Bit is 0, add to mask and pattern */
mask |= (1 << a);
@@ -230,7 +242,8 @@
i++;
format++;
if (i >= ARM64_MAX_TOKEN_LEN) {
- printf("ERROR: token too long in op %s\n",
+ printf("ERROR: "
+ "token too long in op %s\n",
tab->name);
error = 1;
break;
@@ -243,7 +256,8 @@
ret = sscanf(format, "(%d)", &len);
if (ret == 1) {
if (token >= ARM64_MAX_TOKEN_CNT) {
- printf("ERROR: to many tokens in op %s\n",
+ printf("ERROR: "
+ "too many tokens in op %s\n",
tab->name);
error = 1;
break;
@@ -357,7 +371,7 @@
while (i_ptr->name) {
/* If mask is 0 then the parser was not initialized yet */
if ((i_ptr->mask != 0) &&
- ((insn & i_ptr->mask) == i_ptr->pattern)) {
+ ((insn & i_ptr->mask) == i_ptr->pattern)) {
matchp = 1;
break;
}
@@ -388,14 +402,17 @@
/* Print opcode by type */
switch (i_ptr->type) {
case TYPE_01:
- /* OP <RD>, <RN>, <RM>{, <shift [LSL, LSR, ASR]> #<imm>} SF32/64
- OP <RD>, <RN>, #<imm>{, <shift [0, 12]>} SF32/64 */
+ /*
+ * OP <RD>, <RN>, <RM>{, <shift [LSL, LSR, ASR]> #<imm>} SF32/64
+ * OP <RD>, <RN>, #<imm>{, <shift [0, 12]>} SF32/64
+ */
/* Mandatory tokens */
ret = arm64_disasm_read_token(i_ptr, insn, "RD", &rd);
ret |= arm64_disasm_read_token(i_ptr, insn, "RN", &rn);
if (ret != 0) {
- printf("ERROR: Missing mandatory token for op %s type %d\n",
+ printf("ERROR: "
+ "Missing mandatory token for op %s type %d\n",
i_ptr->name, i_ptr->type);
goto undefined;
}
@@ -420,15 +437,18 @@
}
break;
case TYPE_02:
- /* OP <RT>, [<RN>, #<imm>]{!}] SF32/64
- OP <RT>, [<RN>], #<imm>{!} SF32/64
- OP <RT>, <RN>, <RM> {, EXTEND AMOUNT } */
+ /*
+ * OP <RT>, [<RN>, #<imm>]{!}] SF32/64
+ * OP <RT>, [<RN>], #<imm>{!} SF32/64
+ * OP <RT>, <RN>, <RM> {, EXTEND AMOUNT }
+ */
/* Mandatory tokens */
ret = arm64_disasm_read_token(i_ptr, insn, "RT", &rt);
ret |= arm64_disasm_read_token(i_ptr, insn, "RN", &rn);
if (ret != 0) {
- printf("ERROR: Missing mandatory token for op %s type %d\n",
+ printf("ERROR: "
+ "Missing mandatory token for op %s type %d\n",
i_ptr->name, i_ptr->type);
goto undefined;
}
@@ -445,7 +465,7 @@
*/
if (sign_ext == 0) {
imm = imm << ((insn >> ARM_INSN_SIZE_OFFSET) &
- ARM_INSN_SIZE_MASK);
+ ARM_INSN_SIZE_MASK);
option = 0;
}
switch (option) {
@@ -464,7 +484,8 @@
break;
}
- di->di_printf("%s\t%s, ", i_ptr->name, arm64_reg(sf, rt));
+ di->di_printf("%s\t%s, ", i_ptr->name,
+ arm64_reg(sf, rt));
if (inside != 0) {
di->di_printf("[%s", arm64_reg(1, rn));
if (imm != 0)
@@ -516,7 +537,8 @@
/* Mandatory tokens */
ret = arm64_disasm_read_token(i_ptr, insn, "RT", &rt);
if (ret != 0) {
- printf("ERROR: Missing mandatory token for op %s type %d\n",
+ printf("ERROR: "
+ "Missing mandatory token for op %s type %d\n",
i_ptr->name, i_ptr->type);
goto undefined;
}
@@ -533,13 +555,13 @@
}
di->di_printf("\n");
- return(loc + INSN_SIZE);
+ return (loc + INSN_SIZE);
undefined:
di->di_printf("undefined\t%08x\n", insn);
- return(loc + INSN_SIZE);
+ return (loc + INSN_SIZE);
}
/* Parse format strings at the very beginning */
-SYSINIT(arm64_disasm_generate_masks, SI_SUB_DDB_SERVICES,
- SI_ORDER_FIRST, arm64_disasm_generate_masks, arm64_i);
+SYSINIT(arm64_disasm_generate_masks, SI_SUB_DDB_SERVICES, SI_ORDER_FIRST,
+ arm64_disasm_generate_masks, arm64_i);

File Metadata

Mime Type
text/plain
Expires
Wed, Feb 12, 6:52 AM (15 h, 10 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16607499
Default Alt Text
D38899.id118280.diff (5 KB)

Event Timeline