aboutsummaryrefslogtreecommitdiff
path: root/src/armv7/thumb.rs
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2026-07-28 02:53:04 +0000
committeriximeow <me@iximeow.net>2026-07-28 07:28:15 +0000
commit1c03f9be10d03c63d9c6eed1e56333763fee628d (patch)
tree59ddcdce9e6d52c0aaf80465f637363569050890 /src/armv7/thumb.rs
parent5581435b4edc8836e172a5088d74d2ec97b2bc99 (diff)
temp, armv8-thumb
Diffstat (limited to 'src/armv7/thumb.rs')
-rw-r--r--src/armv7/thumb.rs72
1 files changed, 71 insertions, 1 deletions
diff --git a/src/armv7/thumb.rs b/src/armv7/thumb.rs
index 675b9f2..1e3ee28 100644
--- a/src/armv7/thumb.rs
+++ b/src/armv7/thumb.rs
@@ -323,6 +323,41 @@ pub fn decode_into<T: Reader<<ARMv7 as Arch>::Address, <ARMv7 as Arch>::Word>>(d
Operand::RegDeref(Reg::from_u8(rn)),
];
}
+ 0b1000 => {
+ // TODO ARMv8
+ // TODO: v8 ops
+ inst.opcode = Opcode::STLB;
+ }
+ 0b1001 => {
+ // TODO ARMv8
+ // TODO: v8 ops
+ inst.opcode = Opcode::STLH;
+ }
+ 0b1010 => {
+ // TODO ARMv8
+ // TODO: v8 ops
+ inst.opcode = Opcode::STL;
+ }
+ 0b1100 => {
+ // TODO ARMv8
+ // TODO: v8 ops
+ inst.opcode = Opcode::STLEXB;
+ }
+ 0b1101 => {
+ // TODO ARMv8
+ // TODO: v8 ops
+ inst.opcode = Opcode::STLEXH;
+ }
+ 0b1110 => {
+ // TODO ARMv8
+ // TODO: v8 ops
+ inst.opcode = Opcode::STLEX;
+ }
+ 0b1111 => {
+ // TODO ARMv8
+ // TODO: v8 ops
+ inst.opcode = Opcode::STLEXD;
+ }
_ => {
return Err(DecodeError::Undefined);
}
@@ -408,7 +443,7 @@ pub fn decode_into<T: Reader<<ARMv7 as Arch>::Address, <ARMv7 as Arch>::Word>>(d
Operand::Nothing,
];
}
- 0b0110 => {
+ 0b0111 => {
// `LDREXD`
if rt == 13 || rt == 15 || rt2 == 13 || rt2 == 15 || rn == 15 {
decoder.unpredictable()?;
@@ -423,6 +458,41 @@ pub fn decode_into<T: Reader<<ARMv7 as Arch>::Address, <ARMv7 as Arch>::Word>>(d
Operand::Nothing,
];
}
+ 0b1000 => {
+ // TODO ARMv8
+ // TODO: v8 ops
+ inst.opcode = Opcode::LDAB;
+ }
+ 0b1001 => {
+ // TODO ARMv8
+ // TODO: v8 ops
+ inst.opcode = Opcode::LDAH;
+ }
+ 0b1010 => {
+ // TODO ARMv8
+ // TODO: v8 ops
+ inst.opcode = Opcode::LDA;
+ }
+ 0b1100 => {
+ // TODO ARMv8
+ // TODO: v8 ops
+ inst.opcode = Opcode::LDAEXB;
+ }
+ 0b1101 => {
+ // TODO ARMv8
+ // TODO: v8 ops
+ inst.opcode = Opcode::LDAEXH;
+ }
+ 0b1110 => {
+ // TODO ARMv8
+ // TODO: v8 ops
+ inst.opcode = Opcode::LDAEX;
+ }
+ 0b1111 => {
+ // TODO ARMv8
+ // TODO: v8 ops
+ inst.opcode = Opcode::LDAEXD;
+ }
_ => {
return Err(DecodeError::Undefined);
}