Lines Matching +full:0 +full:x800c0000
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
65 static uint16_t ha(uint32_t v) { return (v + 0x8000) >> 16; }
81 writePPC32PltCallStub(buf, sym->getGotPltVA(), nullptr, 0);
97 for (size_t i = 0; i != numEntries; ++i)
98 write32(buf + 4 * i, 0x48000000 | 4 * (numEntries - i));
109 write32(buf + 0, 0x3d6b0000 | ha(afterBcl)); // addis r11,r11,1f-glink@ha
110 write32(buf + 4, 0x7c0802a6); // mflr r0
111 write32(buf + 8, 0x429f0005); // bcl 20,30,.+4
112 write32(buf + 12, 0x396b0000 | lo(afterBcl)); // 1: addi r11,r11,1b-glink@l
113 write32(buf + 16, 0x7d8802a6); // mflr r12
114 write32(buf + 20, 0x7c0803a6); // mtlr r0
115 write32(buf + 24, 0x7d6c5850); // sub r11,r11,r12
116 write32(buf + 28, 0x3d8c0000 | ha(gotBcl)); // addis 12,12,GOT+4-1b@ha
118 write32(buf + 32, 0x800c0000 | lo(gotBcl)); // lwz r0,r12,GOT+4-1b@l(r12)
120 0x818c0000 | lo(gotBcl + 4)); // lwz r12,r12,GOT+8-1b@l(r12)
122 write32(buf + 32, 0x840c0000 | lo(gotBcl)); // lwzu r0,r12,GOT+4-1b@l(r12)
123 write32(buf + 36, 0x818c0000 | 4); // lwz r12,r12,4(r12)
125 write32(buf + 40, 0x7c0903a6); // mtctr 0
126 write32(buf + 44, 0x7c0b5a14); // add r0,11,11
127 write32(buf + 48, 0x7d605a14); // add r11,0,11
128 write32(buf + 52, 0x4e800420); // bctr
131 write32(buf + 0, 0x3d800000 | ha(got + 4)); // lis r12,GOT+4@ha
132 write32(buf + 4, 0x3d6b0000 | ha(-glink)); // addis r11,r11,-glink@ha
134 write32(buf + 8, 0x800c0000 | lo(got + 4)); // lwz r0,GOT+4@l(r12)
136 write32(buf + 8, 0x840c0000 | lo(got + 4)); // lwzu r0,GOT+4@l(r12)
137 write32(buf + 12, 0x396b0000 | lo(-glink)); // addi r11,r11,-glink@l
138 write32(buf + 16, 0x7c0903a6); // mtctr r0
139 write32(buf + 20, 0x7c0b5a14); // add r0,r11,r11
141 write32(buf + 24, 0x818c0000 | lo(got + 8)); // lwz r12,GOT+8@l(r12)
143 write32(buf + 24, 0x818c0000 | 4); // lwz r12,4(r12)
144 write32(buf + 28, 0x7d605a14); // add r11,r0,r11
145 write32(buf + 32, 0x4e800420); // bctr
151 write32(buf, 0x60000000);
162 gotPltHeaderEntriesNum = 0;
163 pltHeaderSize = 0;
174 defaultImageBase = 0x10000000;
176 write32(trapInstr.data(), 0x7fe00008);
181 // In -pie or -shared mode, assume r30 points to .got2+0x8000, and use a
183 writePPC32PltCallStub(buf, sym.getGotPltVA(), sym.file, 0x8000);
187 // _GLOBAL_OFFSET_TABLE_[0] = _DYNAMIC
209 uint32_t PPC::getThunkSectionSpacing() const { return 0x2000000; }
283 return 0;
295 return 0;
300 uint64_t dtpBiasedVal = val - 0x8000;
365 uint32_t mask = 0x0000FFFC;
375 uint32_t mask = 0x03FFFFFC;
414 writeFromHalf16(loc, 0x80000000 | (insn & 0x03ff0000));
420 write32(loc, 0x7c631214);
432 writeFromHalf16(loc, 0x3c620000 | ha(val));
436 write32(loc, 0x38630000 | lo(val));
447 // addi r3, rA, x@got@tlsgd --> addis r3, r2, 0
448 writeFromHalf16(loc, 0x3c620000);
451 // r3+x@dtprel computes r3+x-0x8000, while we want it to compute r3+x@tprel
452 // = r3+x-0x7000, so add 4096 to r3.
454 write32(loc, 0x38631000);
472 uint32_t rt = readFromHalf16(loc) & 0x03e00000;
473 writeFromHalf16(loc, 0x3c020000 | rt | ha(val));
481 unsigned secondaryOp = (read32(loc) & 0x000007fe) >> 1;
483 if (dFormOp == 0) { // Expecting a DS-Form instruction.
485 if (dFormOp == 0)
488 write32(loc, (dFormOp | (insn & 0x03ff0000) | lo(val)));