Lines Matching +full:8 +full:- +full:9 +full:a +full:- +full:f

1 /* SPDX-License-Identifier: GPL-2.0-or-later */
11 RELASZ = 8
12 RELAENT = 9
15 /* A procedure descriptor used when booting this as a COFF file.
26 .balign 8
27 p_start: .8byte _start
28 p_etext: .8byte _etext
29 p_bss_start: .8byte __bss_start
30 p_end: .8byte _end
32 p_toc: .8byte .TOC. - p_base
33 p_dyn: .8byte __dynamic_start - p_base
34 p_rela: .8byte __rela_dyn_start - p_base
35 p_prom: .8byte 0
37 p_pstack: .8byte _platform_stack_top
58 addis r11,r10,(_GLOBAL_OFFSET_TABLE_-p_base)@ha
59 lwz r11,(_GLOBAL_OFFSET_TABLE_-p_base)@l(r11)
61 beq 3f /* if not linked -pie */
64 addis r12,r10,(__dynamic_start-p_base)@ha
65 addi r12,r12,(__dynamic_start-p_base)@l
66 subf r11,r11,r12 /* runtime - linktime offset */
68 /* The dynamic section contains a series of tagged entries.
72 9: lwz r8,0(r12) /* get tag */
74 beq 10f /* end of list */
76 bne 11f
78 b 12f
82 b 12f
85 bne 12f
87 12: addi r12,r12,8
88 b 9b
90 /* The relocation section contains a list of relocations.
95 beq 3f
97 beq 3f
99 beq 3f
104 2: lbz r0,4+3(r9) /* ELF32_R_INFO(reloc->r_info) */
107 lwz r12,0(r9) /* reloc->r_offset */
108 lwz r0,8(r9) /* reloc->r_addend */
114 /* Do a cache flush for our text, in case the loader didn't */
115 3: lwz r9,p_start-p_base(r10) /* note: these are relocated now */
116 lwz r8,p_etext-p_base(r10)
126 lwz r9,p_bss_start-p_base(r10)
127 lwz r8,p_end-p_base(r10)
134 /* Possibly set up a custom stack */
135 lwz r8,p_pstack-p_base(r10)
137 beq 6f
140 stwu r0,-16(r1) /* establish a stack frame */
144 std r5,(p_prom-p_base)(r10)
147 ld r2,(p_toc-p_base)(r10)
151 ld r11,-32768(r2)
153 beq 3f /* if not linked -pie then no dynamic section */
155 ld r11,(p_dyn-p_base)(r10)
157 ld r9,(p_rela-p_base)(r10)
162 9: ld r12,0(r11) /* get tag */
164 beq 12f /* end of list */
166 bne 10f
167 ld r13,8(r11) /* get RELA pointer in r13 */
168 b 11f
171 lwz r8,8(r11) /* get RELASZ pointer in r8 */
172 b 11f
175 bne 11f
176 lwz r14,8(r11) /* get RELAENT pointer in r14 */
178 b 9b
182 beq 3f
183 beq cr1,3f
185 beq 3f
194 13: ld r0,8(r9) /* ELF64_R_TYPE(reloc->r_info) */
197 ld r12,0(r9) /* reloc->r_offset */
198 ld r0,16(r9) /* reloc->r_addend */
204 /* Do a cache flush for our text, in case the loader didn't */
205 3: ld r9,p_start-p_base(r10) /* note: these are relocated now */
206 ld r8,p_etext-p_base(r10)
216 ld r9,p_bss_start-p_base(r10)
217 ld r8,p_end-p_base(r10)
220 addi r9,r9,8
224 /* Possibly set up a custom stack */
225 ld r8,p_pstack-p_base(r10)
227 beq 6f
230 stdu r0,-112(r1) /* establish a stack frame */
245 .rept (\end - \start + 1)
251 #define SAVE_GPRS(start, end, base) OP_REGS std, 8, start, end, base, 0
252 #define REST_GPRS(start, end, base) OP_REGS ld, 8, start, end, base, 0
262 stdu r1,-PROM_FRAME_SIZE(r1) /* Save SP and create stack space */
267 std r10,8*32(r1)
269 std r10,8*33(r1)
277 bcl 20,31,0f
279 addi r11,r10,(1f-0b)
282 ld r10,(p_prom-0b)(r10)
294 ld r10,8*(33)(r1)
301 ld r10,8*32(r1)