Changeset View
Changeset View
Standalone View
Standalone View
sys/cddl/dev/dtrace/aarch64/dtrace_subr.c
Show First 20 Lines • Show All 299 Lines • ▼ Show 20 Lines | if (tmp == STP_64 || tmp == LDP_64) { | ||||
} | } | ||||
/* Update the stack pointer and program counter to continue */ | /* Update the stack pointer and program counter to continue */ | ||||
frame->tf_sp = (register_t)sp; | frame->tf_sp = (register_t)sp; | ||||
frame->tf_elr += INSN_SIZE; | frame->tf_elr += INSN_SIZE; | ||||
return (0); | return (0); | ||||
} | } | ||||
if ((invop & SUB_MASK) == SUB_INSTR) { | |||||
frame->tf_sp -= (invop >> SUB_IMM_SHIFT) & SUB_IMM_MASK; | |||||
frame->tf_elr += INSN_SIZE; | |||||
return (0); | |||||
} | |||||
if ((invop & B_MASK) == B_INSTR) { | if ((invop & B_MASK) == B_INSTR) { | ||||
data = (invop & B_DATA_MASK); | data = (invop & B_DATA_MASK); | ||||
/* The data is the number of 4-byte words to change the pc */ | /* The data is the number of 4-byte words to change the pc */ | ||||
data *= 4; | data *= 4; | ||||
frame->tf_elr += data; | frame->tf_elr += data; | ||||
return (0); | return (0); | ||||
} | } | ||||
Show All 21 Lines |