aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2020-12-01 18:22:34 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2020-12-01 18:22:34 +0000
commit4d16f9419131e4240a94de2ae2375050d23bcd3c (patch)
tree9165347db79c96715cba5a2d5c2f2245001e326d
parentfdd947e4ce29365f61f76f2960a7438a10b0b949 (diff)
Notes
-rw-r--r--sys/arm64/arm64/db_trace.c14
-rw-r--r--sys/arm64/arm64/stack_machdep.c6
-rw-r--r--sys/arm64/arm64/unwind.c8
-rw-r--r--sys/arm64/include/csan.h6
-rw-r--r--sys/arm64/include/stack.h6
-rw-r--r--sys/cddl/dev/dtrace/aarch64/dtrace_isa.c8
6 files changed, 24 insertions, 24 deletions
diff --git a/sys/arm64/arm64/db_trace.c b/sys/arm64/arm64/db_trace.c
index f892935cd13a8..55bf2326b61ca 100644
--- a/sys/arm64/arm64/db_trace.c
+++ b/sys/arm64/arm64/db_trace.c
@@ -73,7 +73,7 @@ db_stack_trace_cmd(struct unwind_state *frame)
db_expr_t offset;
while (1) {
- uint64_t pc = frame->pc;
+ uintptr_t pc = frame->pc;
int ret;
ret = unwind_frame(frame);
@@ -109,9 +109,9 @@ db_trace_thread(struct thread *thr, int count)
if (thr != curthread) {
ctx = kdb_thr_ctx(thr);
- frame.sp = (uint64_t)ctx->pcb_sp;
- frame.fp = (uint64_t)ctx->pcb_x[29];
- frame.pc = (uint64_t)ctx->pcb_x[30];
+ frame.sp = (uintptr_t)ctx->pcb_sp;
+ frame.fp = (uintptr_t)ctx->pcb_x[29];
+ frame.pc = (uintptr_t)ctx->pcb_x[30];
db_stack_trace_cmd(&frame);
} else
db_trace_self();
@@ -122,12 +122,12 @@ void
db_trace_self(void)
{
struct unwind_state frame;
- uint64_t sp;
+ uintptr_t sp;
__asm __volatile("mov %0, sp" : "=&r" (sp));
frame.sp = sp;
- frame.fp = (uint64_t)__builtin_frame_address(0);
- frame.pc = (uint64_t)db_trace_self;
+ frame.fp = (uintptr_t)__builtin_frame_address(0);
+ frame.pc = (uintptr_t)db_trace_self;
db_stack_trace_cmd(&frame);
}
diff --git a/sys/arm64/arm64/stack_machdep.c b/sys/arm64/arm64/stack_machdep.c
index 5af5dde2d461d..4a977217cb4de 100644
--- a/sys/arm64/arm64/stack_machdep.c
+++ b/sys/arm64/arm64/stack_machdep.c
@@ -81,13 +81,13 @@ void
stack_save(struct stack *st)
{
struct unwind_state frame;
- uint64_t sp;
+ uintptr_t sp;
__asm __volatile("mov %0, sp" : "=&r" (sp));
frame.sp = sp;
- frame.fp = (uint64_t)__builtin_frame_address(0);
- frame.pc = (uint64_t)stack_save;
+ frame.fp = (uintptr_t)__builtin_frame_address(0);
+ frame.pc = (uintptr_t)stack_save;
stack_capture(st, &frame);
}
diff --git a/sys/arm64/arm64/unwind.c b/sys/arm64/arm64/unwind.c
index bef9c6fa31f10..77a66954a11c7 100644
--- a/sys/arm64/arm64/unwind.c
+++ b/sys/arm64/arm64/unwind.c
@@ -37,17 +37,17 @@ __FBSDID("$FreeBSD$");
int
unwind_frame(struct unwind_state *frame)
{
- uint64_t fp;
+ uintptr_t fp;
fp = frame->fp;
if (!INKERNEL(fp))
return (-1);
- frame->sp = fp + 0x10;
+ frame->sp = fp + sizeof(uintptr_t) * 2;
/* FP to previous frame (X29) */
- frame->fp = *(uint64_t *)(fp);
+ frame->fp = ((uintptr_t *)fp)[0];
/* LR (X30) */
- frame->pc = *(uint64_t *)(fp + 8) - 4;
+ frame->pc = ((uintptr_t *)fp)[1] - 4;
return (0);
}
diff --git a/sys/arm64/include/csan.h b/sys/arm64/include/csan.h
index bace3866eb665..766da7b96f453 100644
--- a/sys/arm64/include/csan.h
+++ b/sys/arm64/include/csan.h
@@ -76,14 +76,14 @@ kcsan_md_unwind(void)
const char *symname;
#endif
struct unwind_state frame;
- uint64_t sp;
+ uintptr_t sp;
int nsym;
__asm __volatile("mov %0, sp" : "=&r" (sp));
frame.sp = sp;
- frame.fp = (uint64_t)__builtin_frame_address(0);
- frame.pc = (uint64_t)kcsan_md_unwind;
+ frame.fp = (uintptr_t)__builtin_frame_address(0);
+ frame.pc = (uintptr_t)kcsan_md_unwind;
nsym = 0;
while (1) {
diff --git a/sys/arm64/include/stack.h b/sys/arm64/include/stack.h
index db0d4ab38d4d5..53523bda3f398 100644
--- a/sys/arm64/include/stack.h
+++ b/sys/arm64/include/stack.h
@@ -33,9 +33,9 @@
((va) >= VM_MIN_KERNEL_ADDRESS && (va) <= VM_MAX_KERNEL_ADDRESS)
struct unwind_state {
- uint64_t fp;
- uint64_t sp;
- uint64_t pc;
+ uintptr_t fp;
+ uintptr_t sp;
+ uintptr_t pc;
};
int unwind_frame(struct unwind_state *);
diff --git a/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c b/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c
index 082bd19042796..d235ab6dab395 100644
--- a/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c
+++ b/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c
@@ -83,9 +83,9 @@ dtrace_getpcstack(pc_t *pcstack, int pcstack_limit, int aframes,
__asm __volatile("mov %0, sp" : "=&r" (sp));
- state.fp = (uint64_t)__builtin_frame_address(0);
+ state.fp = (uintptr_t)__builtin_frame_address(0);
state.sp = sp;
- state.pc = (uint64_t)dtrace_getpcstack;
+ state.pc = (uintptr_t)dtrace_getpcstack;
while (depth < pcstack_limit) {
if (!INKERNEL(state.pc) || !INKERNEL(state.fp))
@@ -281,9 +281,9 @@ dtrace_getstackdepth(int aframes)
__asm __volatile("mov %0, sp" : "=&r" (sp));
- state.fp = (uint64_t)__builtin_frame_address(0);
+ state.fp = (uintptr_t)__builtin_frame_address(0);
state.sp = sp;
- state.pc = (uint64_t)dtrace_getstackdepth;
+ state.pc = (uintptr_t)dtrace_getstackdepth;
do {
done = unwind_frame(&state);