Lines Matching +full:0 +full:x91000000

3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
25 // as (Expr & ~0xFFF). (This applies even if the machine page size
28 return expr & ~static_cast<uint64_t>(0xFFF); in getAArch64Page()
73 // For instance, getBits(0xF0, 4, 8) returns 0xF.
95 defaultImageBase = 0x200000; in AArch64()
229 return 0; in getImplicitAddend()
315 return SignExtend64<28>(getBits(read32(buf), 0, 25) << 2); in getImplicitAddend()
320 return 0; in getImplicitAddend()
335 0xf0, 0x7b, 0xbf, 0xa9, // stp x16, x30, [sp,#-16]! in writePltHeader()
336 0x10, 0x00, 0x00, 0x90, // adrp x16, Page(&(.got.plt[2])) in writePltHeader()
337 0x11, 0x02, 0x40, 0xf9, // ldr x17, [x16, Offset(&(.got.plt[2]))] in writePltHeader()
338 0x10, 0x02, 0x00, 0x91, // add x16, x16, Offset(&(.got.plt[2])) in writePltHeader()
339 0x20, 0x02, 0x1f, 0xd6, // br x17 in writePltHeader()
340 0x1f, 0x20, 0x03, 0xd5, // nop in writePltHeader()
341 0x1f, 0x20, 0x03, 0xd5, // nop in writePltHeader()
342 0x1f, 0x20, 0x03, 0xd5 // nop in writePltHeader()
357 0x10, 0x00, 0x00, 0x90, // adrp x16, Page(&(.got.plt[n])) in writePlt()
358 0x11, 0x02, 0x40, 0xf9, // ldr x17, [x16, Offset(&(.got.plt[n]))] in writePlt()
359 0x10, 0x02, 0x00, 0x91, // add x16, x16, Offset(&(.got.plt[n])) in writePlt()
360 0x20, 0x02, 0x1f, 0xd6 // br x17 in writePlt()
394 return (128 * 1024 * 1024) - 0x30000; in getThunkSectionSpacing()
414 uint32_t immLo = (imm & 0x3) << 29; in write32AArch64Addr()
415 uint32_t immHi = (imm & 0x1FFFFC) << 3; in write32AArch64Addr()
416 uint64_t mask = (0x3 << 29) | (0x1FFFFC << 3); in write32AArch64Addr()
426 writeMaskedBits32le(l, (imm & 0xFFF) << 10, 0xFFF << 10); in write32Imm12()
437 if (imm & 0x10000) { in writeSMovWImm()
439 imm ^= 0xFFFF; in writeSMovWImm()
446 write32le(loc, inst | ((imm & 0xFFFF) << 5)); in writeSMovWImm()
476 (rel.addend < 0 || in relocate()
519 // opcode and the immediate (0 001 | 01 imm26) we can do this in relocate()
522 write32le(loc, 0x14000000); in relocate()
526 writeMaskedBits32le(loc, (val & 0x0FFFFFFC) >> 2, 0x0FFFFFFC >> 2); in relocate()
533 writeMaskedBits32le(loc, (val & 0x1FFFFC) << 3, 0x1FFFFC << 3); in relocate()
537 write32Imm12(loc, getBits(val, 0, 11)); in relocate()
570 writeMaskedBits32le(loc, (val & 0xFFFF) << 5, 0xFFFF << 5); in relocate()
576 writeMaskedBits32le(loc, (val & 0xFFFF0000) >> 11, 0xFFFF0000 >> 11); in relocate()
582 writeMaskedBits32le(loc, (val & 0xFFFF00000000) >> 27, in relocate()
583 0xFFFF00000000 >> 27); in relocate()
586 writeMaskedBits32le(loc, (val & 0xFFFF000000000000) >> 43, in relocate()
587 0xFFFF000000000000 >> 43); in relocate()
620 writeMaskedBits32le(loc, (val & 0xFFFC) << 3, 0xFFFC << 3); in relocate()
648 // movz x0, #0x0, lsl #16 in relaxTlsGdToLe()
649 // movk x0, #0x10 in relaxTlsGdToLe()
657 write32le(loc, 0xd503201f); // nop in relaxTlsGdToLe()
660 write32le(loc, 0xd2a00000 | (((val >> 16) & 0xffff) << 5)); // movz in relaxTlsGdToLe()
663 write32le(loc, 0xf2800000 | ((val & 0xffff) << 5)); // movk in relaxTlsGdToLe()
687 write32le(loc, 0xd503201f); // nop in relaxTlsGdToIe()
690 write32le(loc, 0x90000000); // adrp in relaxTlsGdToIe()
694 write32le(loc, 0xf9400000); // ldr in relaxTlsGdToIe()
708 uint32_t regNo = read32le(loc) & 0x1f; in relaxTlsIeToLe()
709 write32le(loc, (0xd2a00000 | regNo) | (((val >> 16) & 0xffff) << 5)); in relaxTlsIeToLe()
714 uint32_t regNo = read32le(loc) & 0x1f; in relaxTlsIeToLe()
715 write32le(loc, (0xf2800000 | regNo) | ((val & 0xffff) << 5)); in relaxTlsIeToLe()
726 size_t i = 0; in AArch64Relaxer()
760 if (adrpRel.addend != 0 || addRel.addend != 0) in tryRelaxAdrpAdd()
766 if ((adrpInstr & 0x9f000000) != 0x90000000 || in tryRelaxAdrpAdd()
767 (addInstr & 0xffc00000) != 0x91000000) in tryRelaxAdrpAdd()
769 uint32_t adrpDestReg = adrpInstr & 0x1f; in tryRelaxAdrpAdd()
770 uint32_t addDestReg = addInstr & 0x1f; in tryRelaxAdrpAdd()
771 uint32_t addSrcReg = (addInstr >> 5) & 0x1f; in tryRelaxAdrpAdd()
782 /*addend=*/0, &sym}; in tryRelaxAdrpAdd()
784 write32le(buf + adrpRel.offset, 0xd503201f); in tryRelaxAdrpAdd()
786 write32le(buf + adrRel.offset, 0x10000000 | adrpDestReg); in tryRelaxAdrpAdd()
817 if (adrpRel.addend != 0 || ldrRel.addend != 0) in tryRelaxAdrpLdr()
822 if ((adrpInstr & 0x9f000000) != 0x90000000 || in tryRelaxAdrpLdr()
823 (ldrInstr & 0x3b000000) != 0x39000000) in tryRelaxAdrpLdr()
828 uint32_t adrpDestReg = adrpInstr & 0x1f; in tryRelaxAdrpLdr()
829 uint32_t ldrDestReg = ldrInstr & 0x1f; in tryRelaxAdrpLdr()
830 uint32_t ldrSrcReg = (ldrInstr >> 5) & 0x1f; in tryRelaxAdrpLdr()
848 adrpRel.offset, /*addend=*/0, &sym}; in tryRelaxAdrpLdr()
850 /*addend=*/0, &sym}; in tryRelaxAdrpLdr()
853 write32le(buf + adrpSymRel.offset, 0x90000000 | adrpDestReg); in tryRelaxAdrpLdr()
855 write32le(buf + addRel.offset, 0x91000000 | adrpDestReg | (adrpDestReg << 5)); in tryRelaxAdrpLdr()
879 for (size_t i = 0, size = sec.relocs().size(); i != size; ++i) { in relocateAlloc()
992 const uint8_t btiData[] = { 0x5f, 0x24, 0x03, 0xd5 }; // bti c in writePltHeader()
994 0xf0, 0x7b, 0xbf, 0xa9, // stp x16, x30, [sp,#-16]! in writePltHeader()
995 0x10, 0x00, 0x00, 0x90, // adrp x16, Page(&(.got.plt[2])) in writePltHeader()
996 0x11, 0x02, 0x40, 0xf9, // ldr x17, [x16, Offset(&(.got.plt[2]))] in writePltHeader()
997 0x10, 0x02, 0x00, 0x91, // add x16, x16, Offset(&(.got.plt[2])) in writePltHeader()
998 0x20, 0x02, 0x1f, 0xd6, // br x17 in writePltHeader()
999 0x1f, 0x20, 0x03, 0xd5, // nop in writePltHeader()
1000 0x1f, 0x20, 0x03, 0xd5 // nop in writePltHeader()
1002 const uint8_t nopData[] = { 0x1f, 0x20, 0x03, 0xd5 }; // nop in writePltHeader()
1029 const uint8_t btiData[] = { 0x5f, 0x24, 0x03, 0xd5 }; // bti c in writePlt()
1031 0x10, 0x00, 0x00, 0x90, // adrp x16, Page(&(.got.plt[n])) in writePlt()
1032 0x11, 0x02, 0x40, 0xf9, // ldr x17, [x16, Offset(&(.got.plt[n]))] in writePlt()
1033 0x10, 0x02, 0x00, 0x91 // add x16, x16, Offset(&(.got.plt[n])) in writePlt()
1036 0x9f, 0x21, 0x03, 0xd5, // autia1716 in writePlt()
1037 0x20, 0x02, 0x1f, 0xd6 // br x17 in writePlt()
1040 0x20, 0x02, 0x1f, 0xd6, // br x17 in writePlt()
1041 0x1f, 0x20, 0x03, 0xd5 // nop in writePlt()
1043 const uint8_t nopData[] = { 0x1f, 0x20, 0x03, 0xd5 }; // nop in writePlt()
1130 void lld::elf::createTaggedSymbols(const SmallVector<ELFFileBase *, 0> &files) { in createTaggedSymbols()
1165 if (remainingAllowedTaggedRefs == 0) { in createTaggedSymbols()
1183 assert(remainingTaggedRefs == 0 && in createTaggedSymbols()