Revert "arm64: probes: Fix simulate_ldr*_literal()"
This reverts commit f2ddadb749
.
This commit is contained in:
parent
11b289f4f9
commit
1b5a5af29c
1 changed files with 11 additions and 7 deletions
|
@ -170,15 +170,17 @@ simulate_tbz_tbnz(u32 opcode, long addr, struct pt_regs *regs)
|
|||
void __kprobes
|
||||
simulate_ldr_literal(u32 opcode, long addr, struct pt_regs *regs)
|
||||
{
|
||||
unsigned long load_addr;
|
||||
u64 *load_addr;
|
||||
int xn = opcode & 0x1f;
|
||||
int disp;
|
||||
|
||||
load_addr = addr + ldr_displacement(opcode);
|
||||
disp = ldr_displacement(opcode);
|
||||
load_addr = (u64 *) (addr + disp);
|
||||
|
||||
if (opcode & (1 << 30)) /* x0-x30 */
|
||||
set_x_reg(regs, xn, READ_ONCE(*(u64 *)load_addr));
|
||||
set_x_reg(regs, xn, *load_addr);
|
||||
else /* w0-w30 */
|
||||
set_w_reg(regs, xn, READ_ONCE(*(u32 *)load_addr));
|
||||
set_w_reg(regs, xn, *load_addr);
|
||||
|
||||
instruction_pointer_set(regs, instruction_pointer(regs) + 4);
|
||||
}
|
||||
|
@ -186,12 +188,14 @@ simulate_ldr_literal(u32 opcode, long addr, struct pt_regs *regs)
|
|||
void __kprobes
|
||||
simulate_ldrsw_literal(u32 opcode, long addr, struct pt_regs *regs)
|
||||
{
|
||||
unsigned long load_addr;
|
||||
s32 *load_addr;
|
||||
int xn = opcode & 0x1f;
|
||||
int disp;
|
||||
|
||||
load_addr = addr + ldr_displacement(opcode);
|
||||
disp = ldr_displacement(opcode);
|
||||
load_addr = (s32 *) (addr + disp);
|
||||
|
||||
set_x_reg(regs, xn, READ_ONCE(*(s32 *)load_addr));
|
||||
set_x_reg(regs, xn, *load_addr);
|
||||
|
||||
instruction_pointer_set(regs, instruction_pointer(regs) + 4);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue