1e50d24d55
* v850.h (R_V850_LO16_SPLIT_OFFSET): New reloc. bfd/ * reloc.c (BFD_RELOC_V850_LO16_SPLIT_OFFSET): New bfd_reloc_code_type. * elf32-v850.c (v850_elf_howto_table): Add entry for R_V850_LO16_SPLIT_OFFSET. (v850_elf_reloc_map): Map it to BFD_RELOC_V850_LO16_SPLIT_OFFSET. (v850_elf_perform_lo16_relocation): New function, extracted from... (v850_elf_perform_relocation): ...here. Use it to handle R_V850_LO16_SPLIT_OFFSET. (v850_elf_check_relocs, v850_elf_final_link_relocate): Handle R_V850_LO16_SPLIT_OFFSET. * libbfd.h, bfd-in2.h: Regenerate. gas/ * config/tc-v850.c (handle_lo16): New function. (v850_reloc_prefix): Use it to check lo(). (md_assemble, md_apply_fix3): Handle BFD_RELOC_V850_LO16_SPLIT_OFFSET. gas/testsuite/ * gas/v850/split-lo16.{s,d}: New test. * gas/v850/v850.exp: Run it. ld/testsuite/ * ld-v850: New directory.
21 lines
685 B
ArmAsm
21 lines
685 B
ArmAsm
movhi hi(lo16_nocarry),r0,r1
|
|
addi lo(lo16_nocarry),r1,r2
|
|
ld.bu lo(lo16_nocarry)[r1],r2
|
|
movhi hi(lo16_nocarry + 0x18200),r0,r1
|
|
addi lo(lo16_nocarry + 0x18200),r1,r2
|
|
ld.bu lo(lo16_nocarry + 0x18200)[r1],r2
|
|
movhi hi(split_lo16_nocarry),r0,r1
|
|
ld.bu lo(split_lo16_nocarry)[r1],r2
|
|
addi lo(split_lo16_nocarry),r1,r2
|
|
movhi hi(split_lo16_nocarry + 0x18200),r0,r1
|
|
ld.bu lo(split_lo16_nocarry + 0x18200)[r1],r2
|
|
addi lo(split_lo16_nocarry + 0x18200),r1,r2
|
|
movhi hi(lo16_carry),r0,r1
|
|
addi lo(lo16_carry),r1,r2
|
|
ld.bu lo(lo16_carry)[r1],r2
|
|
movhi hi(split_lo16_carry),r0,r1
|
|
ld.bu lo(split_lo16_carry)[r1],r2
|
|
addi lo(split_lo16_carry),r1,r2
|
|
movhi hi(odd),r0,r1
|
|
ld.bu lo(odd)[r1],r2
|