[PATCH][v6] Support Intel USER_MSR

Hu, Lin1 lin1.hu@intel.com
Tue Oct 31 08:35:21 GMT 2023


 > On 31.10.2023 03:14, Hu, Lin1 wrote:
> > This is the current version.
> >
> > BRs,
> > Lin
> >
> > gas/ChangeLog:
> >
> > 	* NEWS: Support Intel USER_MSR.
> > 	* config/tc-i386.c (smallest_imm_type): Reject imm32 in 64bit
> > 	mode.
> > 	(build_vex_prefix): Add VEXMAP7.
> > 	(md_assemble): Handling the imm32 of USER_MSR.
> > 	(match_template): Handling the unusual immediate.
> > 	* doc/c-i386.texi: Document .user_msr.
> > 	* testsuite/gas/i386/i386.exp: Run USER_MSR tests.
> > 	* testsuite/gas/i386/x86-64.exp: Ditto.
> > 	* testsuite/gas/i386/user_msr-inval.l: New test.
> > 	* testsuite/gas/i386/user_msr-inval.s: Ditto.
> > 	* testsuite/gas/i386/x86-64-user_msr-intel.d: Ditto.
> > 	* testsuite/gas/i386/x86-64-user_msr-inval.l: New test.
> > 	* testsuite/gas/i386/x86-64-user_msr-inval.s: New test.
> > 	* testsuite/gas/i386/x86-64-user_msr.d: Ditto.
> > 	* testsuite/gas/i386/x86-64-user_msr.s: Ditto.
> >
> > opcodes/ChangeLog:
> > 	* i386-dis.c (struct instr_info): Add a new attribute
> > 	has_skipped_modrm.
> > 	(Gq): New.
> > 	(Rq): Ditto.
> > 	(q_mm_mode): Ditto.
> > 	(Nq): Change mode from q_mode to q_mm_mode.
> > 	(VEX_LEN_TABLE):
> > 	(get_valid_dis386): Add VEX_MAP7 in VEX prefix.
> > 	and handle the map7_f8 for save space.
> > 	(OP_Skip_MODRM): Set has_skipped_modrm.
> > 	(OP_E): Skip codep++ when has skipped modrm byte.
> > 	(OP_R): Support q_mode and q_mm_mode.
> > 	(REG_VEX_MAP7_F8_L_0_W_0): New.
> > 	(PREFIX_VEX_MAP7_F8_L_0_W_0_R_0_X86_64): Ditto.
> > 	(X86_64_VEX_MAP7_F8_L_0_W_0_R_0): Ditto.
> > 	(VEX_LEN_MAP7_F8): Ditto.
> > 	(VEX_W_MAP7_F8_L_0): Ditto.
> > 	(MOD_0F38F8): Ditto.
> > 	(PREFIX_0F38F8_M_0): Ditto.
> > 	(PREFIX_0F38F8_M_1_X86_64): Ditto.
> > 	(X86_64_0F38F8_M_1): Ditto.
> > 	(PREFIX_0F38F8): Remove.
> > 	(prefix_table): Add PREFIX_0F38F8_M_1_X86_64.
> > 	Remove PREFIX_0F38F8.
> > 	(reg_table): Add REG_VEX_MAP7_F8_L_0_W_0,
> > 	PREFIX_VEX_MAP7_F8_L_0_W_0_R_0_X86_64.
> > 	(x86_64_table): Add X86_64_0F38F8_PREFIX_3_M_1,
> > 	X86_64_VEX_MAP7_F8_L_0_W_0_R_0 and X86_64_0F38F8_M_1.
> > 	(vex_table): Add VEX_MAP7.
> > 	(vex_len_table): Add VEX_LEN_MAP7_F8,
> > 	VEX_W_MAP7_F8_L_0.
> > 	(mod_table): New entry for USER_MSR and
> > 	add MOD_0F38F8.
> > 	* i386-gen.c (cpu_flag_init): Add CPU_USER_MSR_FLAGS and
> > 	CPU_ANY_USER_MSR_FLAGS. Add add VEXMAP7.
> > 	* i386-init.h: Regenerated.
> > 	* i386-mnem.h: Ditto.
> > 	* i386-opc.h (SPACE_VEXMAP7): New.
> > 	(CPU_USER_MSR_FLAGS): Ditoo.
> > 	(CPU_ANY_USER_MSR_FLAGS): Ditto.
> > 	(i386_cpu_flags): Add cpuuser_msr.
> > 	* i386-opc.tbl: Add USER_MSR instructions.
> > 	* i386-tbl.h: Regenerated.
> 
> Okay. Going forward though please make sure that patches have a useful
> description (beyond the ChangeLog entries).

Thanks, have changed descriptions and upstreamed to the master branch.

BRs,
Lin


More information about the Binutils mailing list