Module Name:    src
Committed By:   riastradh
Date:           Tue May  9 21:29:07 UTC 2023

Modified Files:
        src/external/cddl/osnet/dev/fbt/aarch64: fbt_isa.c

Log Message:
dtrace_fbt: Read and write instruction words in little-endian.

Step toward making this work on aarch64eb.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c

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

Modified files:

Index: src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c
diff -u src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.7 src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.8
--- src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.7	Wed Mar 24 04:46:41 2021
+++ src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c	Tue May  9 21:29:07 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: fbt_isa.c,v 1.7 2021/03/24 04:46:41 simonb Exp $	*/
+/*	$NetBSD: fbt_isa.c,v 1.8 2023/05/09 21:29:07 riastradh Exp $	*/
 
 /*
  * CDDL HEADER START
@@ -103,7 +103,7 @@ fbt_patch_tracepoint(fbt_probe_t *fbt, f
 		return;
 	if (!mm_md_direct_mapped_phys(pa, &va))
 		return;
-	*(fbt_patchval_t *)va = val;
+	*(fbt_patchval_t *)va = htole32(val);
 	cpu_icache_sync_range((vm_offset_t)fbt->fbtp_patchpoint, sizeof(val));
 }
 
@@ -157,7 +157,7 @@ fbt_provide_module_cb(const char *name, 
 
 	/* Look for stp (pre-indexed) operation */
 	for (; instr < limit; instr++) {
-		if ((*instr & LDP_STP_MASK) == STP_64)
+		if ((le32toh(*instr) & LDP_STP_MASK) == STP_64)
 			break;
 	}
 
@@ -181,7 +181,7 @@ fbt_provide_module_cb(const char *name, 
 #ifdef __NetBSD__
 	fbt->fbtp_ctl = mod;
 #endif
-	fbt->fbtp_savedval = *instr;
+	fbt->fbtp_savedval = le32toh(*instr);
 	fbt->fbtp_patchval = FBT_PATCHVAL;
 	fbt->fbtp_symindx = symindx;
 
@@ -195,10 +195,10 @@ fbt_provide_module_cb(const char *name, 
 	retfbt = NULL;
 again:
 	for (; instr < limit; instr++) {
-		if (*instr == RET_INSTR)
+		if (le32toh(*instr) == RET_INSTR)
 			break;
-		else if ((*instr & B_MASK) == B_INSTR) {
-			offs = (*instr & B_DATA_MASK);
+		else if ((le32toh(*instr) & B_MASK) == B_INSTR) {
+			offs = (le32toh(*instr) & B_DATA_MASK);
 			offs *= 4;
 			target = (instr + offs);
 #ifdef __FreeBSD__
@@ -241,7 +241,7 @@ again:
 #ifdef __NetBSD__
 	fbt->fbtp_ctl = mod;
 #endif
-	fbt->fbtp_savedval = *instr;
+	fbt->fbtp_savedval = le32toh(*instr);
 	fbt->fbtp_patchval = FBT_PATCHVAL;
 	fbt->fbtp_symindx = symindx;
 

Reply via email to