mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-23 15:29:51 +00:00
Attempt to make the bit-twiddling readable resulted in the binary value being
overwritten. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121337 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
09aa3f0ef3
commit
797b7aab35
@ -152,10 +152,11 @@ static unsigned adjustFixupValue(unsigned Kind, uint64_t Value) {
|
|||||||
// Note that the halfwords are stored high first, low second; so we need
|
// Note that the halfwords are stored high first, low second; so we need
|
||||||
// to transpose the fixup value here to map properly.
|
// to transpose the fixup value here to map properly.
|
||||||
unsigned isNeg = (int64_t(Value) < 0) ? 1 : 0;
|
unsigned isNeg = (int64_t(Value) < 0) ? 1 : 0;
|
||||||
uint32_t Binary = 0x3fffff & ((Value - 4) >> 1);
|
uint32_t Binary = 0;
|
||||||
Binary = (Binary & 0x7ff) << 16; // Low imm11 value.
|
Value = 0x3fffff & ((Value - 4) >> 1);
|
||||||
Binary |= (Binary & 0x1ffc00) >> 11; // High imm10 value.
|
Binary = (Value & 0x7ff) << 16; // Low imm11 value.
|
||||||
Binary |= isNeg << 10; // Sign bit.
|
Binary |= (Value & 0x1ffc00) >> 11; // High imm10 value.
|
||||||
|
Binary |= isNeg << 10; // Sign bit.
|
||||||
return Binary;
|
return Binary;
|
||||||
}
|
}
|
||||||
case ARM::fixup_arm_thumb_blx: {
|
case ARM::fixup_arm_thumb_blx: {
|
||||||
@ -169,10 +170,11 @@ static unsigned adjustFixupValue(unsigned Kind, uint64_t Value) {
|
|||||||
// Note that the halfwords are stored high first, low second; so we need
|
// Note that the halfwords are stored high first, low second; so we need
|
||||||
// to transpose the fixup value here to map properly.
|
// to transpose the fixup value here to map properly.
|
||||||
unsigned isNeg = (int64_t(Value) < 0) ? 1 : 0;
|
unsigned isNeg = (int64_t(Value) < 0) ? 1 : 0;
|
||||||
uint32_t Binary = 0xfffff & ((Value - 2) >> 2);
|
uint32_t Binary = 0;
|
||||||
Binary = (Binary & 0x3ff) << 17; // Low imm10L value.
|
Value = 0xfffff & ((Value - 2) >> 2);
|
||||||
Binary |= (Binary & 0xffc00) >> 10; // High imm10H value.
|
Binary = (Value & 0x3ff) << 17; // Low imm10L value.
|
||||||
Binary |= isNeg << 10; // Sign bit.
|
Binary |= (Value & 0xffc00) >> 10; // High imm10H value.
|
||||||
|
Binary |= isNeg << 10; // Sign bit.
|
||||||
return Binary;
|
return Binary;
|
||||||
}
|
}
|
||||||
case ARM::fixup_arm_thumb_cp:
|
case ARM::fixup_arm_thumb_cp:
|
||||||
|
Loading…
Reference in New Issue
Block a user