mirror of
https://github.com/AsahiLinux/m1n1
synced 2024-12-18 17:53:10 +00:00
hv_vm: Implement scalar LDNP instructions
Signed-off-by: Asahi Lina <lina@asahilina.net>
This commit is contained in:
parent
595ecb423a
commit
ef7655568b
1 changed files with 4 additions and 4 deletions
|
@ -571,16 +571,16 @@ static bool emulate_load(struct exc_info *ctx, u32 insn, u64 *val, u64 *width, u
|
||||||
regs[Rt] = (s64)EXT(*val, (8 << *width));
|
regs[Rt] = (s64)EXT(*val, (8 << *width));
|
||||||
if (insn & (1 << 22))
|
if (insn & (1 << 22))
|
||||||
regs[Rt] &= 0xffffffff;
|
regs[Rt] &= 0xffffffff;
|
||||||
} else if ((insn & 0xffc00000) == 0x29400000) {
|
} else if ((insn & 0xfec00000) == 0x28400000) {
|
||||||
// LDP (Signed offset, 32-bit)
|
// LD[N]P (Signed offset, 32-bit)
|
||||||
*width = 3;
|
*width = 3;
|
||||||
*vaddr = regs[Rn] + (imm7 * 4);
|
*vaddr = regs[Rn] + (imm7 * 4);
|
||||||
DECODE_OK;
|
DECODE_OK;
|
||||||
u64 Rt2 = (insn >> 10) & 0x1f;
|
u64 Rt2 = (insn >> 10) & 0x1f;
|
||||||
regs[Rt] = val[0] & 0xffffffff;
|
regs[Rt] = val[0] & 0xffffffff;
|
||||||
regs[Rt2] = val[0] >> 32;
|
regs[Rt2] = val[0] >> 32;
|
||||||
} else if ((insn & 0xffc00000) == 0xa9400000) {
|
} else if ((insn & 0xfec00000) == 0xa8400000) {
|
||||||
// LDP (Signed offset, 64-bit)
|
// LD[N]P (Signed offset, 64-bit)
|
||||||
*width = 4;
|
*width = 4;
|
||||||
*vaddr = regs[Rn] + (imm7 * 8);
|
*vaddr = regs[Rn] + (imm7 * 8);
|
||||||
DECODE_OK;
|
DECODE_OK;
|
||||||
|
|
Loading…
Reference in a new issue