Lines Matching refs:loc
34 const uint8_t *loc) const override;
49 void relocate(uint8_t *loc, const Relocation &rel,
100 const uint8_t *loc) const { in getRelExpr()
194 error(getErrorLocation(loc) + "unknown relocation (" + Twine(type) + in getRelExpr()
494 static void stateChangeWarning(uint8_t *loc, RelType relt, const Symbol &s) { in stateChangeWarning() argument
496 const ErrorPlace place = getErrorPlace(loc); in stateChangeWarning()
503 warn(place.loc + "branch and link relocation: " + toString(relt) + in stateChangeWarning()
508 warn(getErrorLocation(loc) + "branch and link relocation: " + in stateChangeWarning()
537 static void encodeAluGroup(uint8_t *loc, const Relocation &rel, uint64_t val, in encodeAluGroup() argument
555 error(getErrorLocation(loc) + "unencodeable immediate " + Twine(val).str() + in encodeAluGroup()
557 write32(loc, (read32(loc) & 0xff3ff000) | opcode | rot | (imm & 0xff)); in encodeAluGroup()
560 static void encodeLdrGroup(uint8_t *loc, const Relocation &rel, uint64_t val, in encodeLdrGroup() argument
574 checkUInt(loc, imm, 12, rel); in encodeLdrGroup()
575 write32(loc, (read32(loc) & 0xff7ff000) | opcode | imm); in encodeLdrGroup()
578 static void encodeLdrsGroup(uint8_t *loc, const Relocation &rel, uint64_t val, in encodeLdrsGroup() argument
592 checkUInt(loc, imm, 8, rel); in encodeLdrsGroup()
593 write32(loc, (read32(loc) & 0xff7ff0f0) | opcode | ((imm & 0xf0) << 4) | in encodeLdrsGroup()
597 void ARM::relocate(uint8_t *loc, const Relocation &rel, uint64_t val) const { in relocate() argument
616 write32(loc, val); in relocate()
619 checkInt(loc, val, 31, rel); in relocate()
620 write32(loc, (read32(loc) & 0x80000000) | (val & ~0x80000000)); in relocate()
629 bool isBlx = (read32(loc) & 0xfe000000) == 0xfa000000; in relocate()
633 stateChangeWarning(loc, rel.type, *rel.sym); in relocate()
636 checkInt(loc, val, 26, rel); in relocate()
637 write32(loc, 0xfa000000 | // opcode in relocate()
644 write32(loc, 0xeb000000 | (read32(loc) & 0x00ffffff)); in relocate()
651 checkInt(loc, val, 26, rel); in relocate()
652 write32(loc, (read32(loc) & ~0x00ffffff) | ((val >> 2) & 0x00ffffff)); in relocate()
656 checkInt(loc, val, 9, rel); in relocate()
657 write16(loc, (read32(loc) & 0xff00) | ((val >> 1) & 0x00ff)); in relocate()
661 checkInt(loc, val, 12, rel); in relocate()
662 write16(loc, (read32(loc) & 0xf800) | ((val >> 1) & 0x07ff)); in relocate()
666 checkInt(loc, val, 21, rel); in relocate()
667 write16(loc, in relocate()
668 (read16(loc) & 0xfbc0) | // opcode cond in relocate()
671 write16(loc + 2, in relocate()
686 bool isBlx = (read16(loc + 2) & 0x1000) == 0; in relocate()
690 stateChangeWarning(loc, rel.type, *rel.sym); in relocate()
696 write16(loc + 2, read16(loc + 2) & ~0x1000); in relocate()
698 write16(loc + 2, (read16(loc + 2) & ~0x1000) | 1 << 12); in relocate()
703 checkInt(loc, val, 23, rel); in relocate()
704 write16(loc, in relocate()
707 write16(loc + 2, in relocate()
708 (read16(loc + 2) & 0xd000) | // opcode in relocate()
718 checkInt(loc, val, 25, rel); in relocate()
719 write16(loc, in relocate()
723 write16(loc + 2, in relocate()
724 (read16(loc + 2) & 0xd000) | // opcode in relocate()
732 write32(loc, (read32(loc) & ~0x000f0fff) | ((val & 0xf000) << 4) | in relocate()
738 write32(loc, (read32(loc) & ~0x000f0fff) | in relocate()
746 write16(loc, in relocate()
751 write16(loc + 2, in relocate()
752 (read16(loc + 2) & 0x8f00) | // opcode in relocate()
760 write16(loc, in relocate()
764 write16(loc + 2, in relocate()
765 (read16(loc + 2) & 0x8f00) | // opcode in relocate()
770 write16(loc, (read16(loc) &~ 0x00ff) | ((val >> 24) & 0x00ff)); in relocate()
773 write16(loc, (read16(loc) &~ 0x00ff) | ((val >> 16) & 0x00ff)); in relocate()
776 write16(loc, (read16(loc) &~ 0x00ff) | ((val >> 8) & 0x00ff)); in relocate()
779 write16(loc, (read16(loc) &~ 0x00ff) | (val & 0x00ff)); in relocate()
782 encodeAluGroup(loc, rel, val, 0, true); in relocate()
785 encodeAluGroup(loc, rel, val, 0, false); in relocate()
788 encodeAluGroup(loc, rel, val, 1, true); in relocate()
791 encodeAluGroup(loc, rel, val, 1, false); in relocate()
794 encodeAluGroup(loc, rel, val, 2, true); in relocate()
797 encodeLdrGroup(loc, rel, val, 0); in relocate()
800 encodeLdrGroup(loc, rel, val, 1); in relocate()
803 encodeLdrGroup(loc, rel, val, 2); in relocate()
806 encodeLdrsGroup(loc, rel, val, 0); in relocate()
809 encodeLdrsGroup(loc, rel, val, 1); in relocate()
812 encodeLdrsGroup(loc, rel, val, 2); in relocate()
822 checkUInt(loc, imm, 12, rel); in relocate()
823 write16(loc, (read16(loc) & 0xfb0f) | sub | (imm & 0x800) >> 1); in relocate()
824 write16(loc + 2, in relocate()
825 (read16(loc + 2) & 0x8f00) | (imm & 0x700) << 4 | (imm & 0xff)); in relocate()
835 checkUInt(loc, val, 10, rel); in relocate()
836 checkAlignment(loc, val, 4, rel); in relocate()
837 write16(loc, (read16(loc) & 0xff00) | (val & 0x3fc) >> 2); in relocate()
853 checkUInt(loc, imm12, 12, rel); in relocate()
854 write16(loc, read16(loc) | u); in relocate()
855 write16(loc + 2, (read16(loc + 2) & 0xf000) | imm12); in relocate()