mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-16 02:07:38 +08:00
Add support for a __gcc_isr pseudo isntruction to the AVR assembler.
PR gas/21683 include * opcode/avr.h (AVR_INSN): Add one for __gcc_isr. gas * doc/c-avr.texi (AVR Options) <-mgcc-isr>: Document it. (AVR Pseudo Instructions): New node. * config/tc-avr.h (md_pre_output_hook): Define to avr_pre_output_hook. (md_undefined_symbol): Define to avr_undefined_symbol. (avr_pre_output_hook, avr_undefined_symbol): New protos. * config/tc-avr.c (struc-symbol.h): Include it. (ISR_CHUNK_Done, ISR_CHUNK_Prologue, ISR_CHUNK_Epilogue): New enums. (avr_isr, avr_gccisr_opcode) (avr_no_sreg_hash, avr_no_sreg): New static variables. (avr_opt_s) <have_gccisr>: Add field. (avr_opt): Add initializer for have_gccisr. (enum options) <OPTION_HAVE_GCCISR>: Add enum. (md_longopts) <"mgcc-isr">: Add entry. (md_show_usage): Document -mgcc-isr. (md_parse_option) [OPTION_HAVE_GCCISR]: Handle it. (md_undefined_symbol): Remove. (avr_undefined_symbol, avr_pre_output_hook): New fuctions. (md_begin) <avr_no_sreg_hash, avr_gccisr_opcode>: Initialize them. (avr_operand) <pregno>: Add argument and set *pregno if function is called for a register constraint. [N]: Handle constraint. (avr_operands) <avr_operand>: Pass 5th parameter to calls. [avr_opt.have_gccisr]: Call avr_update_gccisr. Call avr_gccisr_operands instead of avr_operands. (avr_update_gccisr, avr_emit_insn, avr_patch_gccisr_frag) (avr_gccisr_operands, avr_check_gccisr_done): New static functions. * testsuite/gas/avr/gccisr-01.d: New test. * testsuite/gas/avr/gccisr-01.s: New test. * testsuite/gas/avr/gccisr-02.d: New test. * testsuite/gas/avr/gccisr-02.s: New test. * testsuite/gas/avr/gccisr-03.d: New test. * testsuite/gas/avr/gccisr-03.s: New test.
This commit is contained in:

committed by
Nick Clifton

parent
33f466961c
commit
32f76c6773
@ -110,6 +110,7 @@
|
||||
z - Z pointer register (for [e]lpm Rd,Z[+])
|
||||
M - immediate value from 0 to 255
|
||||
n - immediate value from 0 to 255 ( n = ~M ). Relocation impossible
|
||||
N - immediate value from 0 to 255. Relocation impossible
|
||||
s - immediate value from 0 to 7
|
||||
P - Port address value from 0 to 63. (in, out)
|
||||
p - Port address value from 0 to 31. (cbi, sbi, sbic, sbis)
|
||||
@ -306,3 +307,7 @@ AVR_INSN (eijmp, "", "1001010000011001", 1, AVR_ISA_EIND, 0x9419)
|
||||
/* DES instruction for encryption and decryption. */
|
||||
AVR_INSN (des, "E", "10010100EEEE1011", 1, AVR_ISA_DES, 0x940B)
|
||||
|
||||
/* Operands are evaluated by hand and won't pop new fux-ups.
|
||||
The pseudo-insn is hidden behind NOP so that avr-dis.c don't see it. */
|
||||
AVR_INSN (__gcc_isr, "", "0000000000000000", 1, AVR_ISA_1200, 0x0)
|
||||
|
||||
|
Reference in New Issue
Block a user