diff options
| author | iximeow <me@iximeow.net> | 2026-08-03 00:53:34 +0000 |
|---|---|---|
| committer | iximeow <me@iximeow.net> | 2026-08-03 00:53:34 +0000 |
| commit | 0a874bce72cff033004599c4a2dc061ea0782c7f (patch) | |
| tree | 94d8c0bc3db5ebb49d9987a79e209821cd44e7ec /src/armv7 | |
| parent | 5f48fb91742f9e9977b499959861a8a40d4ec03c (diff) | |
armv8 thumb-mode hints
Diffstat (limited to 'src/armv7')
| -rw-r--r-- | src/armv7/display.rs | 11 | ||||
| -rw-r--r-- | src/armv7/thumb.rs | 55 |
2 files changed, 66 insertions, 0 deletions
diff --git a/src/armv7/display.rs b/src/armv7/display.rs index 91affeb..36be517 100644 --- a/src/armv7/display.rs +++ b/src/armv7/display.rs @@ -976,6 +976,11 @@ impl <T: fmt::Write, Y: YaxColors> Colorize<T, Y> for ConditionedOpcode { Opcode::YIELD | Opcode::WFE | Opcode::WFI | + Opcode::PACBTI | + Opcode::BTI | + Opcode::ESB | + Opcode::PAC | + Opcode::AUT | Opcode::SEV | Opcode::ERET | Opcode::RFE(_, _) | @@ -1268,6 +1273,12 @@ impl Opcode { Opcode::TT { alternate: true, unprivileged: false } => "tta", Opcode::TT { alternate: false, unprivileged: true } => "ttt", Opcode::TT { alternate: true, unprivileged: true } => "ttat", + + Opcode::PACBTI => { "pacbti" }, + Opcode::BTI => { "bti" }, + Opcode::ESB => { "esb" }, + Opcode::PAC => { "pac" }, + Opcode::AUT => { "aut" }, } } } diff --git a/src/armv7/thumb.rs b/src/armv7/thumb.rs index cba18a4..d4bef7a 100644 --- a/src/armv7/thumb.rs +++ b/src/armv7/thumb.rs @@ -1797,6 +1797,39 @@ pub fn decode_into<T: Reader<<ARMv7 as Arch>::Address, <ARMv7 as Arch>::Word>>(d Operand::Nothing, ]; } + 0b00001101 => { + // `PACBTI T1` + // v8 + inst.opcode = Opcode::PACBTI; + inst.operands = [ + Operand::Nothing, + Operand::Nothing, + Operand::Nothing, + Operand::Nothing, + ]; + } + 0b00001111 => { + // `BTI T1` + // v8 + inst.opcode = Opcode::BTI; + inst.operands = [ + Operand::Nothing, + Operand::Nothing, + Operand::Nothing, + Operand::Nothing, + ]; + } + 0b00010000 => { + // `ESB T1` + // v8 + inst.opcode = Opcode::ESB; + inst.operands = [ + Operand::Nothing, + Operand::Nothing, + Operand::Nothing, + Operand::Nothing, + ]; + } 0b00010100 => { // `CSDB` (`A8-376`) // v6T2 @@ -1808,6 +1841,28 @@ pub fn decode_into<T: Reader<<ARMv7 as Arch>::Address, <ARMv7 as Arch>::Word>>(d Operand::Nothing, ]; } + 0b00011101 => { + // `PAC T1` + // v8 + inst.opcode = Opcode::PAC; + inst.operands = [ + Operand::Nothing, + Operand::Nothing, + Operand::Nothing, + Operand::Nothing, + ]; + } + 0b00101101 => { + // `AUT T1` + // v8 + inst.opcode = Opcode::AUT; + inst.operands = [ + Operand::Nothing, + Operand::Nothing, + Operand::Nothing, + Operand::Nothing, + ]; + } hint => { // from DDI0406 C.d (v7): // > Encodings with op1 set to 0b000 and a value of |
