@@ -370,6 +370,14 @@ __AARCH64_INSN_FUNCS(eret_auth, 0xFFFFFBFF, 0xD69F0BFF)
370
370
__AARCH64_INSN_FUNCS (mrs , 0xFFF00000 , 0xD5300000 )
371
371
__AARCH64_INSN_FUNCS (msr_imm , 0xFFF8F01F , 0xD500401F )
372
372
__AARCH64_INSN_FUNCS (msr_reg , 0xFFF00000 , 0xD5100000 )
373
+ __AARCH64_INSN_FUNCS (dmb , 0xFFFFF0FF , 0xD50330BF )
374
+ __AARCH64_INSN_FUNCS (dsb_base , 0xFFFFF0FF , 0xD503309F )
375
+ __AARCH64_INSN_FUNCS (dsb_nxs , 0xFFFFF3FF , 0xD503323F )
376
+ __AARCH64_INSN_FUNCS (isb , 0xFFFFF0FF , 0xD50330DF )
377
+ __AARCH64_INSN_FUNCS (sb , 0xFFFFFFFF , 0xD50330FF )
378
+ __AARCH64_INSN_FUNCS (clrex , 0xFFFFF0FF , 0xD503305F )
379
+ __AARCH64_INSN_FUNCS (ssbb , 0xFFFFFFFF , 0xD503309F )
380
+ __AARCH64_INSN_FUNCS (pssbb , 0xFFFFFFFF , 0xD503349F )
373
381
374
382
#undef __AARCH64_INSN_FUNCS
375
383
@@ -381,6 +389,19 @@ static inline bool aarch64_insn_is_adr_adrp(u32 insn)
381
389
return aarch64_insn_is_adr (insn ) || aarch64_insn_is_adrp (insn );
382
390
}
383
391
392
+ static inline bool aarch64_insn_is_dsb (u32 insn )
393
+ {
394
+ return aarch64_insn_is_dsb_base (insn ) || aarch64_insn_is_dsb_nxs (insn );
395
+ }
396
+
397
+ static inline bool aarch64_insn_is_barrier (u32 insn )
398
+ {
399
+ return aarch64_insn_is_dmb (insn ) || aarch64_insn_is_dsb (insn ) ||
400
+ aarch64_insn_is_isb (insn ) || aarch64_insn_is_sb (insn ) ||
401
+ aarch64_insn_is_clrex (insn ) || aarch64_insn_is_ssbb (insn ) ||
402
+ aarch64_insn_is_pssbb (insn );
403
+ }
404
+
384
405
int aarch64_insn_read (void * addr , u32 * insnp );
385
406
int aarch64_insn_write (void * addr , u32 insn );
386
407
enum aarch64_insn_encoding_class aarch64_get_insn_class (u32 insn );
0 commit comments