aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2021-12-27 20:32:34 -0800
committeriximeow <me@iximeow.net>2021-12-27 20:32:34 -0800
commitf2b625ebdb0f8a17644eeda1d3fad182bf3cfb99 (patch)
treec1dbb7777b2807739945724dc3402739859ee3d8
parent04d08fa86a39f40e7542a8337ff6c2f640f882f7 (diff)
another form of prfm
-rw-r--r--src/armv8/a64.rs8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/armv8/a64.rs b/src/armv8/a64.rs
index a29c6fb..3aaa7ef 100644
--- a/src/armv8/a64.rs
+++ b/src/armv8/a64.rs
@@ -7513,7 +7513,7 @@ impl Decoder<ARMv8> for InstDecoder {
Err(DecodeError::InvalidOpcode),
Ok((Opcode::STUR, SizeCode::X)),
Ok((Opcode::LDUR, SizeCode::X)),
- Err(DecodeError::IncompleteDecoder), // PRFM is not supported yet
+ Ok((Opcode::PRFM, SizeCode::X)),
Err(DecodeError::InvalidOpcode),
];
@@ -7521,7 +7521,11 @@ impl Decoder<ARMv8> for InstDecoder {
inst.opcode = opcode;
inst.operands = [
- Operand::Register(size, Rt),
+ if size_opc == 0b1110 {
+ Operand::PrefetchOp(Rt)
+ } else {
+ Operand::Register(size, Rt)
+ },
Operand::RegOffset(Rn, imm9),
Operand::Nothing,
Operand::Nothing,