Skip to content
Snippets Groups Projects
  • Peter Bergner's avatar
    dd7efa79
    PowerPC add initial -mfuture instruction support · dd7efa79
    Peter Bergner authored
    This patch adds initial 64-bit insn assembler/disassembler support.
    The only instruction added is "pnop" along with the automatic aligning
    of prefix instruction so they do not cross 64-byte boundaries.
    
    include/
    	* dis-asm.h (WIDE_OUTPUT): Define.
    	* opcode/ppc.h (prefix_opcodes, prefix_num_opcodes): Declare.
    	(PPC_OPCODE_POWERXX, PPC_GET_PREFIX, PPC_GET_SUFFIX),
    	(PPC_PREFIX_P, PPC_PREFIX_SEG): Define.
    opcodes/
    	* ppc-dis.c (ppc_opts): Add "future" entry.
    	(PREFIX_OPCD_SEGS): Define.
    	(prefix_opcd_indices): New array.
    	(disassemble_init_powerpc): Initialize prefix_opcd_indices.
    	(lookup_prefix): New function.
    	(print_insn_powerpc): Handle 64-bit prefix instructions.
    	* ppc-opc.c (PREFIX_OP, PREFIX_FORM, SUFFIX_MASK, PREFIX_MASK),
    	(PMRR, POWERXX): Define.
    	(prefix_opcodes): New instruction table.
    	(prefix_num_opcodes): New constant.
    binutils/
    	* objdump.c (disassemble_bytes): Set WIDE_OUTPUT in flags.
    gas/
    	* config/tc-ppc.c (ppc_setup_opcodes): Handle prefix_opcodes.
    	(struct insn_label_list): New.
    	(insn_labels, free_insn_labels): New variables.
    	(ppc_record_label, ppc_clear_labels, ppc_start_line_hook): New funcs.
    	(ppc_frob_label, ppc_new_dot_label): Move functions earlier in file
    	and call ppc_record_label.
    	(md_assemble): Handle 64-bit prefix instructions.  Align labels
    	that are on the same line as a prefix instruction.
    	* config/tc-ppc.h (tc_frob_label, ppc_frob_label): Move to
    	later in the file.
    	(md_start_line_hook): Define.
    	(ppc_start_line_hook): Declare.
    	* testsuite/gas/ppc/prefix-align.d,
    	* testsuite/gas/ppc/prefix-align.s: New test.
    	* testsuite/gas/ppc/ppc.exp: Run new test.
    dd7efa79
    History
    PowerPC add initial -mfuture instruction support
    Peter Bergner authored
    This patch adds initial 64-bit insn assembler/disassembler support.
    The only instruction added is "pnop" along with the automatic aligning
    of prefix instruction so they do not cross 64-byte boundaries.
    
    include/
    	* dis-asm.h (WIDE_OUTPUT): Define.
    	* opcode/ppc.h (prefix_opcodes, prefix_num_opcodes): Declare.
    	(PPC_OPCODE_POWERXX, PPC_GET_PREFIX, PPC_GET_SUFFIX),
    	(PPC_PREFIX_P, PPC_PREFIX_SEG): Define.
    opcodes/
    	* ppc-dis.c (ppc_opts): Add "future" entry.
    	(PREFIX_OPCD_SEGS): Define.
    	(prefix_opcd_indices): New array.
    	(disassemble_init_powerpc): Initialize prefix_opcd_indices.
    	(lookup_prefix): New function.
    	(print_insn_powerpc): Handle 64-bit prefix instructions.
    	* ppc-opc.c (PREFIX_OP, PREFIX_FORM, SUFFIX_MASK, PREFIX_MASK),
    	(PMRR, POWERXX): Define.
    	(prefix_opcodes): New instruction table.
    	(prefix_num_opcodes): New constant.
    binutils/
    	* objdump.c (disassemble_bytes): Set WIDE_OUTPUT in flags.
    gas/
    	* config/tc-ppc.c (ppc_setup_opcodes): Handle prefix_opcodes.
    	(struct insn_label_list): New.
    	(insn_labels, free_insn_labels): New variables.
    	(ppc_record_label, ppc_clear_labels, ppc_start_line_hook): New funcs.
    	(ppc_frob_label, ppc_new_dot_label): Move functions earlier in file
    	and call ppc_record_label.
    	(md_assemble): Handle 64-bit prefix instructions.  Align labels
    	that are on the same line as a prefix instruction.
    	* config/tc-ppc.h (tc_frob_label, ppc_frob_label): Move to
    	later in the file.
    	(md_start_line_hook): Define.
    	(ppc_start_line_hook): Declare.
    	* testsuite/gas/ppc/prefix-align.d,
    	* testsuite/gas/ppc/prefix-align.s: New test.
    	* testsuite/gas/ppc/ppc.exp: Run new test.
dis-asm.h 16.57 KiB