diff options
author | merry <git@mary.rs> | 2022-09-14 22:18:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-14 18:18:15 -0300 |
commit | fbcf802fbc32dc7730520402dd44b0667bef2bbd (patch) | |
tree | f3d99006660bd61c7913203e37fb01e08d509c80 /ARMeilleure/Instructions | |
parent | c3c41fa4bb2ecc172f4538813c4bb17e2d86f9b2 (diff) |
A32/T32/A64: Implement Hint instructions (CSDB, SEV, SEVL, WFE, WFI, YIELD) (#3694)1.1.272
* OpCodeTable: Implement Hint instructions (CSDB, SEV, SEVL, WFE, WFI, YIELD)
* A64: Remove catch-all Hint instruction
* T16: Handle unallocated hint instructions
Some thumb tests execute these assuming that they're nops.
* T32: Fill out other Hint instructions
* A32: Fill out other hint instructions
Diffstat (limited to 'ARMeilleure/Instructions')
-rw-r--r-- | ARMeilleure/Instructions/InstEmitMemoryEx.cs | 5 | ||||
-rw-r--r-- | ARMeilleure/Instructions/InstEmitSystem.cs | 5 | ||||
-rw-r--r-- | ARMeilleure/Instructions/InstName.cs | 7 |
3 files changed, 12 insertions, 5 deletions
diff --git a/ARMeilleure/Instructions/InstEmitMemoryEx.cs b/ARMeilleure/Instructions/InstEmitMemoryEx.cs index af6adfb9..c7ed01e3 100644 --- a/ARMeilleure/Instructions/InstEmitMemoryEx.cs +++ b/ARMeilleure/Instructions/InstEmitMemoryEx.cs @@ -26,6 +26,11 @@ namespace ARMeilleure.Instructions EmitClearExclusive(context); } + public static void Csdb(ArmEmitterContext context) + { + // Execute as no-op. + } + public static void Dmb(ArmEmitterContext context) => EmitBarrier(context); public static void Dsb(ArmEmitterContext context) => EmitBarrier(context); diff --git a/ARMeilleure/Instructions/InstEmitSystem.cs b/ARMeilleure/Instructions/InstEmitSystem.cs index 50dab07d..cdfaa26e 100644 --- a/ARMeilleure/Instructions/InstEmitSystem.cs +++ b/ARMeilleure/Instructions/InstEmitSystem.cs @@ -15,11 +15,6 @@ namespace ARMeilleure.Instructions private const int DczSizeLog2 = 4; // Log2 size in words public const int DczSizeInBytes = 4 << DczSizeLog2; - public static void Hint(ArmEmitterContext context) - { - // Execute as no-op. - } - public static void Isb(ArmEmitterContext context) { // Execute as no-op. diff --git a/ARMeilleure/Instructions/InstName.cs b/ARMeilleure/Instructions/InstName.cs index 73be1aef..fd71d92e 100644 --- a/ARMeilleure/Instructions/InstName.cs +++ b/ARMeilleure/Instructions/InstName.cs @@ -45,6 +45,7 @@ namespace ARMeilleure.Instructions Dsb, Eon, Eor, + Esb, Extr, Hint, Isb, @@ -82,6 +83,8 @@ namespace ARMeilleure.Instructions Sbfm, Sdiv, Sel, + Sev, + Sevl, Shsub8, Smaddl, Smsubl, @@ -105,12 +108,16 @@ namespace ARMeilleure.Instructions Sys, Tbnz, Tbz, + Tsb, Ubfm, Udiv, Umaddl, Umsubl, Umulh, Und, + Wfe, + Wfi, + Yield, // FP & SIMD (AArch64) Abs_S, |