mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-03 13:31:05 +00:00
ARM Fixup valus for movt/movw are for the whole value.
Remove an assert that was expecting only the relevant 16bit portion for the fixup being handled. Also kill some dead code in the T2 portion. rdar://9653509 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140861 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d80c13bfed
commit
98602ac9a9
@ -183,8 +183,6 @@ static unsigned adjustFixupValue(unsigned Kind, uint64_t Value) {
|
||||
case ARM::fixup_arm_movw_lo16_pcrel: {
|
||||
unsigned Hi4 = (Value & 0xF000) >> 12;
|
||||
unsigned Lo12 = Value & 0x0FFF;
|
||||
assert ((((int64_t)Value) >= -0x8000) && (((int64_t)Value) <= 0x7fff) &&
|
||||
"Out of range pc-relative fixup value!");
|
||||
// inst{19-16} = Hi4;
|
||||
// inst{11-0} = Lo12;
|
||||
Value = (Hi4 << 16) | (Lo12);
|
||||
@ -205,11 +203,6 @@ static unsigned adjustFixupValue(unsigned Kind, uint64_t Value) {
|
||||
// inst{26} = i;
|
||||
// inst{14-12} = Mid3;
|
||||
// inst{7-0} = Lo8;
|
||||
// The value comes in as the whole thing, not just the portion required
|
||||
// for this fixup, so we need to mask off the bits not handled by this
|
||||
// portion (lo vs. hi).
|
||||
Value &= 0xffff;
|
||||
Value = (Hi4 << 16) | (i << 26) | (Mid3 << 12) | (Lo8);
|
||||
uint64_t swapped = (Value & 0xFFFF0000) >> 16;
|
||||
swapped |= (Value & 0x0000FFFF) << 16;
|
||||
return swapped;
|
||||
|
Loading…
Reference in New Issue
Block a user