aboutsummaryrefslogtreecommitdiff
path: root/ARMeilleure/Instructions
diff options
context:
space:
mode:
authormerry <git@mary.rs>2022-09-14 22:18:15 +0100
committerGitHub <noreply@github.com>2022-09-14 18:18:15 -0300
commitfbcf802fbc32dc7730520402dd44b0667bef2bbd (patch)
treef3d99006660bd61c7913203e37fb01e08d509c80 /ARMeilleure/Instructions
parentc3c41fa4bb2ecc172f4538813c4bb17e2d86f9b2 (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.cs5
-rw-r--r--ARMeilleure/Instructions/InstEmitSystem.cs5
-rw-r--r--ARMeilleure/Instructions/InstName.cs7
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,