Open
Description
Describe the bug
The dsb
DataSynchronizationBarrier instruction doesn't properly parse most of the time, being parsed as unknown MSR
calls.
To Reproduce
The following bytes fail to properly parse in LE: 9f 3f 03 d5
(dsb SY
)
Expected behavior
...
Screenshots
Not really necessary
Attachments
...
Environment (please complete the following information):
- OS: Linux
- Java Version: 21
- Ghidra Version: 11.0.3
- Ghidra Origin: distro
Additional context
Fix:
diff --git a/Ghidra/Processors/AARCH64/data/languages/AARCH64base.sinc b/Ghidra/Processors/AARCH64/data/languages/AARCH64base.sinc
index 5370387..1219d65 100644
--- a/Ghidra/Processors/AARCH64/data/languages/AARCH64base.sinc
+++ b/Ghidra/Processors/AARCH64/data/languages/AARCH64base.sinc
@@ -2270,10 +2270,10 @@ is b_2431=0xd5 & b_2223=0 & l=0 & Op0=0 & Op1=3 & CRn=0x3 & CRm_dbarrier_op & CR
# AUNIT --inst xd503309f/mask=xfffff0ff --status nodest
:dsb CRm_dbarrier_op
-is b_2431=0xd5 & b_2223=0 & l=0 & Op0=0 & Op1=3 & CRn=0x3 & CRm_dbarrier_op & CRm_32 & CRm_10=2 & Op2=4 & Rt=0x1f
+is b_2431=0xd5 & b_2223=0 & l=0 & Op0=0 & Op1=3 & CRn=0x3 & CRm_dbarrier_op & CRm_32 & Op2=4 & Rt=0x1f
{
types:1 = 0x3; #MBReqTypes_All
- domain:1 = CRm_32;
+ domain:1 = CRm_dbarrier_op;
DataSynchronizationBarrier(domain, types);
}
Should I make a PR?