[binutils-gdb] arm: Support pac_key_* register operand for MRS/MSR in Armv8.1-M Mainline

Andre Simoes Dias Vieira avieira@sourceware.org
Wed Nov 20 17:16:01 GMT 2024


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1fb5ccd6bfc140c0f542cdd678e5888e18599e59

commit 1fb5ccd6bfc140c0f542cdd678e5888e18599e59
Author: Andre Vieira <andre.simoesdiasvieira@arm.com>
Date:   Wed Nov 20 17:15:28 2024 +0000

    arm: Support pac_key_* register operand for MRS/MSR in Armv8.1-M Mainline
    
    Add support for pac_key_[pu]_[0-3](_ns)? register operands for the MRS and MSR
    instructions when assembling for Armv8.1-M Mainline, as well as adding the
    corresponding support for disassembling instructions that use it.

Diff:
---
 gas/config/tc-arm.c                       |  18 +++-
 gas/testsuite/gas/arm/archv8_1m-pac-msr.d | 137 ++++++++++++++++++++++++++++++
 gas/testsuite/gas/arm/archv8_1m-pac-msr.s |  77 +++++++++++++++++
 opcodes/arm-dis.c                         |  31 ++++++-
 4 files changed, 258 insertions(+), 5 deletions(-)

diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index a1bf33a90a9..67b431c1591 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -23855,6 +23855,14 @@ static const struct asm_psr v7m_psrs[] =
   {"basepri_max",  0x12}, {"BASEPRI_MAX",  0x12},
   {"faultmask",	   0x13}, {"FAULTMASK",	   0x13},
   {"control",	   0x14}, {"CONTROL",	   0x14},
+  {"pac_key_p_0",  0x20}, {"PAC_KEY_P_0",  0x20},
+  {"pac_key_p_1",  0x21}, {"PAC_KEY_P_1",  0x21},
+  {"pac_key_p_2",  0x22}, {"PAC_KEY_P_2",  0x22},
+  {"pac_key_p_3",  0x23}, {"PAC_KEY_P_3",  0x23},
+  {"pac_key_u_0",  0x24}, {"PAC_KEY_U_0",  0x24},
+  {"pac_key_u_1",  0x25}, {"PAC_KEY_U_1",  0x25},
+  {"pac_key_u_2",  0x26}, {"PAC_KEY_U_2",  0x26},
+  {"pac_key_u_3",  0x27}, {"PAC_KEY_U_3",  0x27},
   {"msp_ns",	   0x88}, {"MSP_NS",	   0x88},
   {"psp_ns",	   0x89}, {"PSP_NS",	   0x89},
   {"msplim_ns",	   0x8a}, {"MSPLIM_NS",	   0x8a},
@@ -23863,7 +23871,15 @@ static const struct asm_psr v7m_psrs[] =
   {"basepri_ns",   0x91}, {"BASEPRI_NS",   0x91},
   {"faultmask_ns", 0x93}, {"FAULTMASK_NS", 0x93},
   {"control_ns",   0x94}, {"CONTROL_NS",   0x94},
-  {"sp_ns",	   0x98}, {"SP_NS",	   0x98 }
+  {"sp_ns",	   0x98}, {"SP_NS",	   0x98},
+  {"pac_key_p_0_ns",  0xa0}, {"PAC_KEY_P_0_NS",  0xa0},
+  {"pac_key_p_1_ns",  0xa1}, {"PAC_KEY_P_1_NS",  0xa1},
+  {"pac_key_p_2_ns",  0xa2}, {"PAC_KEY_P_2_NS",  0xa2},
+  {"pac_key_p_3_ns",  0xa3}, {"PAC_KEY_P_3_NS",  0xa3},
+  {"pac_key_u_0_ns",  0xa4}, {"PAC_KEY_U_0_NS",  0xa4},
+  {"pac_key_u_1_ns",  0xa5}, {"PAC_KEY_U_1_NS",  0xa5},
+  {"pac_key_u_2_ns",  0xa6}, {"PAC_KEY_U_2_NS",  0xa6},
+  {"pac_key_u_3_ns",  0xa7}, {"PAC_KEY_U_3_NS",  0xa7},
 };
 
 /* Table of all shift-in-operand names.	 */
diff --git a/gas/testsuite/gas/arm/archv8_1m-pac-msr.d b/gas/testsuite/gas/arm/archv8_1m-pac-msr.d
new file mode 100644
index 00000000000..187799bbb03
--- /dev/null
+++ b/gas/testsuite/gas/arm/archv8_1m-pac-msr.d
@@ -0,0 +1,137 @@
+#name: ARMv8.1-M Mainline PACBTI Extension MSR/MRS instructions
+#as: -march=armv8.1-m.main+pacbti
+#objdump: -dr --prefix-addresses --show-raw-insn
+#skip: *-*-pe *-wince-*
+
+
+.*: +file format .*arm.*
+
+Disassembly of section .text:
+[^>]*> f380 8820 	msr	PAC_KEY_P_0, r0
+[^>]*> f3ef 8020 	mrs	r0, PAC_KEY_P_0
+[^>]*> f380 8821 	msr	PAC_KEY_P_1, r0
+[^>]*> f3ef 8021 	mrs	r0, PAC_KEY_P_1
+[^>]*> f380 8822 	msr	PAC_KEY_P_2, r0
+[^>]*> f3ef 8022 	mrs	r0, PAC_KEY_P_2
+[^>]*> f380 8823 	msr	PAC_KEY_P_3, r0
+[^>]*> f3ef 8023 	mrs	r0, PAC_KEY_P_3
+[^>]*> f389 8820 	msr	PAC_KEY_P_0, r9
+[^>]*> f3ef 8920 	mrs	r9, PAC_KEY_P_0
+[^>]*> f389 8821 	msr	PAC_KEY_P_1, r9
+[^>]*> f3ef 8921 	mrs	r9, PAC_KEY_P_1
+[^>]*> f389 8822 	msr	PAC_KEY_P_2, r9
+[^>]*> f3ef 8922 	mrs	r9, PAC_KEY_P_2
+[^>]*> f389 8823 	msr	PAC_KEY_P_3, r9
+[^>]*> f3ef 8923 	mrs	r9, PAC_KEY_P_3
+[^>]*> f380 8820 	msr	PAC_KEY_P_0, r0
+[^>]*> f3ef 8020 	mrs	r0, PAC_KEY_P_0
+[^>]*> f380 8821 	msr	PAC_KEY_P_1, r0
+[^>]*> f3ef 8021 	mrs	r0, PAC_KEY_P_1
+[^>]*> f380 8822 	msr	PAC_KEY_P_2, r0
+[^>]*> f3ef 8022 	mrs	r0, PAC_KEY_P_2
+[^>]*> f380 8823 	msr	PAC_KEY_P_3, r0
+[^>]*> f3ef 8023 	mrs	r0, PAC_KEY_P_3
+[^>]*> f389 8820 	msr	PAC_KEY_P_0, r9
+[^>]*> f3ef 8920 	mrs	r9, PAC_KEY_P_0
+[^>]*> f389 8821 	msr	PAC_KEY_P_1, r9
+[^>]*> f3ef 8921 	mrs	r9, PAC_KEY_P_1
+[^>]*> f389 8822 	msr	PAC_KEY_P_2, r9
+[^>]*> f3ef 8922 	mrs	r9, PAC_KEY_P_2
+[^>]*> f389 8823 	msr	PAC_KEY_P_3, r9
+[^>]*> f3ef 8923 	mrs	r9, PAC_KEY_P_3
+[^>]*> f380 8824 	msr	PAC_KEY_U_0, r0
+[^>]*> f3ef 8024 	mrs	r0, PAC_KEY_U_0
+[^>]*> f380 8825 	msr	PAC_KEY_U_1, r0
+[^>]*> f3ef 8025 	mrs	r0, PAC_KEY_U_1
+[^>]*> f380 8826 	msr	PAC_KEY_U_2, r0
+[^>]*> f3ef 8026 	mrs	r0, PAC_KEY_U_2
+[^>]*> f380 8827 	msr	PAC_KEY_U_3, r0
+[^>]*> f3ef 8027 	mrs	r0, PAC_KEY_U_3
+[^>]*> f389 8824 	msr	PAC_KEY_U_0, r9
+[^>]*> f3ef 8924 	mrs	r9, PAC_KEY_U_0
+[^>]*> f389 8825 	msr	PAC_KEY_U_1, r9
+[^>]*> f3ef 8925 	mrs	r9, PAC_KEY_U_1
+[^>]*> f389 8826 	msr	PAC_KEY_U_2, r9
+[^>]*> f3ef 8926 	mrs	r9, PAC_KEY_U_2
+[^>]*> f389 8827 	msr	PAC_KEY_U_3, r9
+[^>]*> f3ef 8927 	mrs	r9, PAC_KEY_U_3
+[^>]*> f380 8824 	msr	PAC_KEY_U_0, r0
+[^>]*> f3ef 8024 	mrs	r0, PAC_KEY_U_0
+[^>]*> f380 8825 	msr	PAC_KEY_U_1, r0
+[^>]*> f3ef 8025 	mrs	r0, PAC_KEY_U_1
+[^>]*> f380 8826 	msr	PAC_KEY_U_2, r0
+[^>]*> f3ef 8026 	mrs	r0, PAC_KEY_U_2
+[^>]*> f380 8827 	msr	PAC_KEY_U_3, r0
+[^>]*> f3ef 8027 	mrs	r0, PAC_KEY_U_3
+[^>]*> f389 8824 	msr	PAC_KEY_U_0, r9
+[^>]*> f3ef 8924 	mrs	r9, PAC_KEY_U_0
+[^>]*> f389 8825 	msr	PAC_KEY_U_1, r9
+[^>]*> f3ef 8925 	mrs	r9, PAC_KEY_U_1
+[^>]*> f389 8826 	msr	PAC_KEY_U_2, r9
+[^>]*> f3ef 8926 	mrs	r9, PAC_KEY_U_2
+[^>]*> f389 8827 	msr	PAC_KEY_U_3, r9
+[^>]*> f3ef 8927 	mrs	r9, PAC_KEY_U_3
+[^>]*> f380 88a0 	msr	PAC_KEY_P_0_NS, r0
+[^>]*> f3ef 80a0 	mrs	r0, PAC_KEY_P_0_NS
+[^>]*> f380 88a1 	msr	PAC_KEY_P_1_NS, r0
+[^>]*> f3ef 80a1 	mrs	r0, PAC_KEY_P_1_NS
+[^>]*> f380 88a2 	msr	PAC_KEY_P_2_NS, r0
+[^>]*> f3ef 80a2 	mrs	r0, PAC_KEY_P_2_NS
+[^>]*> f380 88a3 	msr	PAC_KEY_P_3_NS, r0
+[^>]*> f3ef 80a3 	mrs	r0, PAC_KEY_P_3_NS
+[^>]*> f389 88a0 	msr	PAC_KEY_P_0_NS, r9
+[^>]*> f3ef 89a0 	mrs	r9, PAC_KEY_P_0_NS
+[^>]*> f389 88a1 	msr	PAC_KEY_P_1_NS, r9
+[^>]*> f3ef 89a1 	mrs	r9, PAC_KEY_P_1_NS
+[^>]*> f389 88a2 	msr	PAC_KEY_P_2_NS, r9
+[^>]*> f3ef 89a2 	mrs	r9, PAC_KEY_P_2_NS
+[^>]*> f389 88a3 	msr	PAC_KEY_P_3_NS, r9
+[^>]*> f3ef 89a3 	mrs	r9, PAC_KEY_P_3_NS
+[^>]*> f380 88a0 	msr	PAC_KEY_P_0_NS, r0
+[^>]*> f3ef 80a0 	mrs	r0, PAC_KEY_P_0_NS
+[^>]*> f380 88a1 	msr	PAC_KEY_P_1_NS, r0
+[^>]*> f3ef 80a1 	mrs	r0, PAC_KEY_P_1_NS
+[^>]*> f380 88a2 	msr	PAC_KEY_P_2_NS, r0
+[^>]*> f3ef 80a2 	mrs	r0, PAC_KEY_P_2_NS
+[^>]*> f380 88a3 	msr	PAC_KEY_P_3_NS, r0
+[^>]*> f3ef 80a3 	mrs	r0, PAC_KEY_P_3_NS
+[^>]*> f389 88a0 	msr	PAC_KEY_P_0_NS, r9
+[^>]*> f3ef 89a0 	mrs	r9, PAC_KEY_P_0_NS
+[^>]*> f389 88a1 	msr	PAC_KEY_P_1_NS, r9
+[^>]*> f3ef 89a1 	mrs	r9, PAC_KEY_P_1_NS
+[^>]*> f389 88a2 	msr	PAC_KEY_P_2_NS, r9
+[^>]*> f3ef 89a2 	mrs	r9, PAC_KEY_P_2_NS
+[^>]*> f389 88a3 	msr	PAC_KEY_P_3_NS, r9
+[^>]*> f3ef 89a3 	mrs	r9, PAC_KEY_P_3_NS
+[^>]*> f380 88a4 	msr	PAC_KEY_U_0_NS, r0
+[^>]*> f3ef 80a4 	mrs	r0, PAC_KEY_U_0_NS
+[^>]*> f380 88a5 	msr	PAC_KEY_U_1_NS, r0
+[^>]*> f3ef 80a5 	mrs	r0, PAC_KEY_U_1_NS
+[^>]*> f380 88a6 	msr	PAC_KEY_U_2_NS, r0
+[^>]*> f3ef 80a6 	mrs	r0, PAC_KEY_U_2_NS
+[^>]*> f380 88a7 	msr	PAC_KEY_U_3_NS, r0
+[^>]*> f3ef 80a7 	mrs	r0, PAC_KEY_U_3_NS
+[^>]*> f389 88a4 	msr	PAC_KEY_U_0_NS, r9
+[^>]*> f3ef 89a4 	mrs	r9, PAC_KEY_U_0_NS
+[^>]*> f389 88a5 	msr	PAC_KEY_U_1_NS, r9
+[^>]*> f3ef 89a5 	mrs	r9, PAC_KEY_U_1_NS
+[^>]*> f389 88a6 	msr	PAC_KEY_U_2_NS, r9
+[^>]*> f3ef 89a6 	mrs	r9, PAC_KEY_U_2_NS
+[^>]*> f389 88a7 	msr	PAC_KEY_U_3_NS, r9
+[^>]*> f3ef 89a7 	mrs	r9, PAC_KEY_U_3_NS
+[^>]*> f380 88a4 	msr	PAC_KEY_U_0_NS, r0
+[^>]*> f3ef 80a4 	mrs	r0, PAC_KEY_U_0_NS
+[^>]*> f380 88a5 	msr	PAC_KEY_U_1_NS, r0
+[^>]*> f3ef 80a5 	mrs	r0, PAC_KEY_U_1_NS
+[^>]*> f380 88a6 	msr	PAC_KEY_U_2_NS, r0
+[^>]*> f3ef 80a6 	mrs	r0, PAC_KEY_U_2_NS
+[^>]*> f380 88a7 	msr	PAC_KEY_U_3_NS, r0
+[^>]*> f3ef 80a7 	mrs	r0, PAC_KEY_U_3_NS
+[^>]*> f389 88a4 	msr	PAC_KEY_U_0_NS, r9
+[^>]*> f3ef 89a4 	mrs	r9, PAC_KEY_U_0_NS
+[^>]*> f389 88a5 	msr	PAC_KEY_U_1_NS, r9
+[^>]*> f3ef 89a5 	mrs	r9, PAC_KEY_U_1_NS
+[^>]*> f389 88a6 	msr	PAC_KEY_U_2_NS, r9
+[^>]*> f3ef 89a6 	mrs	r9, PAC_KEY_U_2_NS
+[^>]*> f389 88a7 	msr	PAC_KEY_U_3_NS, r9
+[^>]*> f3ef 89a7 	mrs	r9, PAC_KEY_U_3_NS
diff --git a/gas/testsuite/gas/arm/archv8_1m-pac-msr.s b/gas/testsuite/gas/arm/archv8_1m-pac-msr.s
new file mode 100644
index 00000000000..11221f473b1
--- /dev/null
+++ b/gas/testsuite/gas/arm/archv8_1m-pac-msr.s
@@ -0,0 +1,77 @@
+.macro rw_sys_reg sys_reg reg
+msr \sys_reg, \reg
+mrs \reg, \sys_reg
+.endm
+
+rw_sys_reg sys_reg=pac_key_p_0 reg=r0
+rw_sys_reg sys_reg=pac_key_p_1 reg=r0
+rw_sys_reg sys_reg=pac_key_p_2 reg=r0
+rw_sys_reg sys_reg=pac_key_p_3 reg=r0
+rw_sys_reg sys_reg=pac_key_p_0 reg=r9
+rw_sys_reg sys_reg=pac_key_p_1 reg=r9
+rw_sys_reg sys_reg=pac_key_p_2 reg=r9
+rw_sys_reg sys_reg=pac_key_p_3 reg=r9
+
+rw_sys_reg sys_reg=PAC_KEY_P_0 reg=r0
+rw_sys_reg sys_reg=PAC_KEY_P_1 reg=r0
+rw_sys_reg sys_reg=PAC_KEY_P_2 reg=r0
+rw_sys_reg sys_reg=PAC_KEY_P_3 reg=r0
+rw_sys_reg sys_reg=PAC_KEY_P_0 reg=r9
+rw_sys_reg sys_reg=PAC_KEY_P_1 reg=r9
+rw_sys_reg sys_reg=PAC_KEY_P_2 reg=r9
+rw_sys_reg sys_reg=PAC_KEY_P_3 reg=r9
+
+rw_sys_reg sys_reg=pac_key_u_0 reg=r0
+rw_sys_reg sys_reg=pac_key_u_1 reg=r0
+rw_sys_reg sys_reg=pac_key_u_2 reg=r0
+rw_sys_reg sys_reg=pac_key_u_3 reg=r0
+rw_sys_reg sys_reg=pac_key_u_0 reg=r9
+rw_sys_reg sys_reg=pac_key_u_1 reg=r9
+rw_sys_reg sys_reg=pac_key_u_2 reg=r9
+rw_sys_reg sys_reg=pac_key_u_3 reg=r9
+
+rw_sys_reg sys_reg=PAC_KEY_U_0 reg=r0
+rw_sys_reg sys_reg=PAC_KEY_U_1 reg=r0
+rw_sys_reg sys_reg=PAC_KEY_U_2 reg=r0
+rw_sys_reg sys_reg=PAC_KEY_U_3 reg=r0
+rw_sys_reg sys_reg=PAC_KEY_U_0 reg=r9
+rw_sys_reg sys_reg=PAC_KEY_U_1 reg=r9
+rw_sys_reg sys_reg=PAC_KEY_U_2 reg=r9
+rw_sys_reg sys_reg=PAC_KEY_U_3 reg=r9
+
+rw_sys_reg sys_reg=pac_key_p_0_ns reg=r0
+rw_sys_reg sys_reg=pac_key_p_1_ns reg=r0
+rw_sys_reg sys_reg=pac_key_p_2_ns reg=r0
+rw_sys_reg sys_reg=pac_key_p_3_ns reg=r0
+rw_sys_reg sys_reg=pac_key_p_0_ns reg=r9
+rw_sys_reg sys_reg=pac_key_p_1_ns reg=r9
+rw_sys_reg sys_reg=pac_key_p_2_ns reg=r9
+rw_sys_reg sys_reg=pac_key_p_3_ns reg=r9
+
+rw_sys_reg sys_reg=PAC_KEY_P_0_NS reg=r0
+rw_sys_reg sys_reg=PAC_KEY_P_1_NS reg=r0
+rw_sys_reg sys_reg=PAC_KEY_P_2_NS reg=r0
+rw_sys_reg sys_reg=PAC_KEY_P_3_NS reg=r0
+rw_sys_reg sys_reg=PAC_KEY_P_0_NS reg=r9
+rw_sys_reg sys_reg=PAC_KEY_P_1_NS reg=r9
+rw_sys_reg sys_reg=PAC_KEY_P_2_NS reg=r9
+rw_sys_reg sys_reg=PAC_KEY_P_3_NS reg=r9
+
+rw_sys_reg sys_reg=pac_key_u_0_ns reg=r0
+rw_sys_reg sys_reg=pac_key_u_1_ns reg=r0
+rw_sys_reg sys_reg=pac_key_u_2_ns reg=r0
+rw_sys_reg sys_reg=pac_key_u_3_ns reg=r0
+rw_sys_reg sys_reg=pac_key_u_0_ns reg=r9
+rw_sys_reg sys_reg=pac_key_u_1_ns reg=r9
+rw_sys_reg sys_reg=pac_key_u_2_ns reg=r9
+rw_sys_reg sys_reg=pac_key_u_3_ns reg=r9
+
+rw_sys_reg sys_reg=PAC_KEY_U_0_NS reg=r0
+rw_sys_reg sys_reg=PAC_KEY_U_1_NS reg=r0
+rw_sys_reg sys_reg=PAC_KEY_U_2_NS reg=r0
+rw_sys_reg sys_reg=PAC_KEY_U_3_NS reg=r0
+rw_sys_reg sys_reg=PAC_KEY_U_0_NS reg=r9
+rw_sys_reg sys_reg=PAC_KEY_U_1_NS reg=r9
+rw_sys_reg sys_reg=PAC_KEY_U_2_NS reg=r9
+rw_sys_reg sys_reg=PAC_KEY_U_3_NS reg=r9
+
diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c
index a83cbbdf8c2..a3aa68031a7 100644
--- a/opcodes/arm-dis.c
+++ b/opcodes/arm-dis.c
@@ -5280,7 +5280,7 @@ is_mve_okay_in_it (enum mve_instructions matched_insn)
 }
 
 static bool
-is_mve_architecture (struct disassemble_info *info)
+is_v81m_architecture (struct disassemble_info *info)
 {
   struct arm_private_data *private_data = info->private_data;
   arm_feature_set allowed_arches = private_data->features;
@@ -10999,6 +10999,14 @@ psr_name (int regno)
     case 0x12: return "BASEPRI_MAX";
     case 0x13: return "FAULTMASK";
     case 0x14: return "CONTROL";
+    case 0x20: return "PAC_KEY_P_0";
+    case 0x21: return "PAC_KEY_P_1";
+    case 0x22: return "PAC_KEY_P_2";
+    case 0x23: return "PAC_KEY_P_3";
+    case 0x24: return "PAC_KEY_U_0";
+    case 0x25: return "PAC_KEY_U_1";
+    case 0x26: return "PAC_KEY_U_2";
+    case 0x27: return "PAC_KEY_U_3";
     case 0x88: return "MSP_NS";
     case 0x89: return "PSP_NS";
     case 0x8a: return "MSPLIM_NS";
@@ -11008,6 +11016,14 @@ psr_name (int regno)
     case 0x93: return "FAULTMASK_NS";
     case 0x94: return "CONTROL_NS";
     case 0x98: return "SP_NS";
+    case 0xa0: return "PAC_KEY_P_0_NS";
+    case 0xa1: return "PAC_KEY_P_1_NS";
+    case 0xa2: return "PAC_KEY_P_2_NS";
+    case 0xa3: return "PAC_KEY_P_3_NS";
+    case 0xa4: return "PAC_KEY_U_0_NS";
+    case 0xa5: return "PAC_KEY_U_1_NS";
+    case 0xa6: return "PAC_KEY_U_2_NS";
+    case 0xa7: return "PAC_KEY_U_3_NS";
     default: return "<unknown>";
     }
 }
@@ -11020,7 +11036,7 @@ print_insn_thumb32 (bfd_vma pc, struct disassemble_info *info, long given)
   const struct opcode32 *insn;
   void *stream = info->stream;
   fprintf_styled_ftype func = info->fprintf_styled_func;
-  bool is_mve = is_mve_architecture (info);
+  bool is_mve = is_v81m_architecture (info);
   enum disassembler_style base_style = dis_style_mnemonic;
   enum disassembler_style old_base_style = base_style;
 
@@ -11671,6 +11687,10 @@ print_insn_thumb32 (bfd_vma pc, struct disassemble_info *info, long given)
 		    if (given & 0x100)
 		      func (stream, dis_style_register, "c");
 		  }
+		else if (is_v81m_architecture (info))
+		  func (stream, dis_style_register, "%s",
+			psr_name (given & 0xff));
+
 		else if ((given & 0x20) == 0x20)
 		  {
 		    char const* name;
@@ -11694,8 +11714,11 @@ print_insn_thumb32 (bfd_vma pc, struct disassemble_info *info, long given)
 		break;
 
 	      case 'D':
-		if (((given & 0xff) == 0)
-		    || ((given & 0x20) == 0x20))
+		if (is_v81m_architecture (info))
+		  func (stream, dis_style_register, "%s",
+			psr_name (given & 0xff));
+		else if (((given & 0xff) == 0)
+			 || ((given & 0x20) == 0x20))
 		  {
 		    char const* name;
 		    unsigned sm = (given & 0xf0000) >> 16;


More information about the Binutils-cvs mailing list