LLVM: llvm::AVR Namespace Reference (original) (raw)

The set of supported fixups.

Although most of the current fixup types reflect a unique relocation one can have multiple fixup types for a given relocation and thus need to be uniquely named.

Note

This table must be in the same order of MCFixupKindInfo Infos[AVR::NumTargetFixupKinds] in AVRAsmBackend.cpp.

Enumerator
fixup_32 A 32-bit AVR fixup.
fixup_7_pcrel A 7-bit PC-relative fixup for the family of conditional branches which take 7-bit targets (BRNE,BRGT,etc).
fixup_13_pcrel A 12-bit PC-relative fixup for the family of branches which take 12-bit targets (RJMP,RCALL,etc). NoteAlthough the fixup is labelled as 13 bits, it is actually only encoded in 12. The reason for The nonmenclature is that AVR branch targets are rightshifted by 1, because instructions are always aligned to 2 bytes, so the 0'th bit is always 0. This way there is 13-bits of precision.
fixup_16 A 16-bit address.
fixup_16_pm A 16-bit program memory address.
fixup_ldi Replaces the 8-bit immediate with another value.
fixup_lo8_ldi Replaces the immediate operand of a 16-bit Rd, K instruction with the lower 8 bits of a 16-bit value (bits 0-7).
fixup_hi8_ldi Replaces the immediate operand of a 16-bit Rd, K instruction with the upper 8 bits of a 16-bit value (bits 8-15).
fixup_hh8_ldi Replaces the immediate operand of a 16-bit Rd, K instruction with the upper 8 bits of a 24-bit value (bits 16-23).
fixup_ms8_ldi Replaces the immediate operand of a 16-bit Rd, K instruction with the upper 8 bits of a 32-bit value (bits 24-31).
fixup_lo8_ldi_neg Replaces the immediate operand of a 16-bit Rd, K instruction with the lower 8 bits of a negated 16-bit value (bits 0-7).
fixup_hi8_ldi_neg Replaces the immediate operand of a 16-bit Rd, K instruction with the upper 8 bits of a negated 16-bit value (bits 8-15).
fixup_hh8_ldi_neg Replaces the immediate operand of a 16-bit Rd, K instruction with the upper 8 bits of a negated 24-bit value (bits 16-23).
fixup_ms8_ldi_neg Replaces the immediate operand of a 16-bit Rd, K instruction with the upper 8 bits of a negated 32-bit value (bits 24-31).
fixup_lo8_ldi_pm Replaces the immediate operand of a 16-bit Rd, K instruction with the lower 8 bits of a 16-bit program memory address value (bits 0-7).
fixup_hi8_ldi_pm Replaces the immediate operand of a 16-bit Rd, K instruction with the upper 8 bits of a 16-bit program memory address value (bits 8-15).
fixup_hh8_ldi_pm Replaces the immediate operand of a 16-bit Rd, K instruction with the upper 8 bits of a 24-bit program memory address value (bits 16-23).
fixup_lo8_ldi_pm_neg Replaces the immediate operand of a 16-bit Rd, K instruction with the lower 8 bits of a negated 16-bit program memory address value (bits 0-7).
fixup_hi8_ldi_pm_neg Replaces the immediate operand of a 16-bit Rd, K instruction with the upper 8 bits of a negated 16-bit program memory address value (bits 8-15).
fixup_hh8_ldi_pm_neg Replaces the immediate operand of a 16-bit Rd, K instruction with the upper 8 bits of a negated 24-bit program memory address value (bits 16-23).
fixup_call A 22-bit fixup for the target of a CALL k or JMP k instruction.
fixup_6
fixup_6_adiw A symbol+addr fixup for the `LDD +, " family of instructions.
fixup_lo8_ldi_gs
fixup_hi8_ldi_gs
fixup_8
fixup_8_lo8
fixup_8_hi8
fixup_8_hlo8
fixup_diff8
fixup_diff16
fixup_diff32
fixup_lds_sts_16
fixup_port6 A 6-bit port address.
fixup_port5 A 5-bit port address.
LastTargetFixupKind
NumTargetFixupKinds

Definition at line 26 of file AVRFixupKinds.h.