Lines Matching +full:high +full:- +full:z
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Copyright (C) 1994-2002 Russell King
22 * __fixup_pv_table - patch the stub instructions with the delta between
36 subs r3, r8, #PAGE_OFFSET @ PHYS_OFFSET - PAGE_OFFSET
38 strcc ip, [r0, #HIGH_OFFSET] @ save to __pv_offset high bits
56 ldr r0, [r6, #HIGH_OFFSET] @ pv_offset high word
61 @ The Thumb-2 versions of the patchable sequences are
63 @ phys-to-virt: movw <reg>, #offset<31:21>
67 @ virt-to-phys (non-LPAE): movw <reg>, #offset<31:21>
71 @ virt-to-phys (LPAE): movw <reg>, #offset<31:21>
77 @ In the non-LPAE case, all patchable instructions are MOVW
79 @ second halfword of the opcode (the 16-bit immediate is encoded
83 @ +-----------+---+-------------+------++---+------+----+------+
85 @ +-----------+---+-------------+------++---+------+----+------+
87 @ In the LPAE case, we also need to patch in the high word of the
98 @ +-----------+---+---------------------++---+------+----+------+
101 @ +-----------+---+---------------------++---+------+----+------+
109 adds r4, #4 @ clears Z flag
114 bne 0f @ skip to MOVW handling (Z flag is clear)
115 bic ip, #0x20 @ clear bit 5 (MVN -> MOV)
116 orr ip, ip, r0, lsr #16 @ MOV -> MVN if offset < 0
119 @ Z flag is set
125 orreq ip, r0 @ Z flag set -> MOV/MVN -> patch in high bits
126 orrne ip, r6 @ Z flag clear -> MOVW -> patch in low bits
144 @ phys-to-virt: sub <VA>, <PA>, #offset<31:24>, lsl #24
147 @ virt-to-phys (non-LPAE): add <PA>, <VA>, #offset<31:24>, lsl #24
150 @ virt-to-phys (LPAE): movw <reg>, #offset<31:20>
155 @ In the non-LPAE case, all patchable instructions are ADD or SUB
162 @ +------+-----------------+------+------+-------+
167 @ +------+-----------------+------+------+-------+
170 @ word, and patch in the high word of the offset into the immediate
178 @ +------+-----------------+------+------+-------+
180 @ +------+-----------------+------+------+-------+
183 mov r3, r6, lsr #16 @ put offset bits 31-16 into r3
184 mov r6, r6, lsr #24 @ put offset bits 31-24 into r6
185 and r3, r3, #0xf0 @ only keep offset bits 23-20 in r3
195 orreq ip, ip, r6, lsl #4 @ MOVW -> mask in offset bits 31-24
196 orreq ip, ip, r3, lsr #4 @ MOVW -> mask in offset bits 23-20
197 orrne ip, ip, r0 @ MOV -> mask in offset bits 7-0 (or bit 22)
204 orreq ip, ip, r6 ARM_BE8(, lsl #24) @ mask in offset bits 31-24
205 orrne ip, ip, r3 ARM_BE8(, lsl #24) @ mask in offset bits 23-20
219 stmfd sp!, {r4 - r7, lr}
223 ldmfd sp!, {r4 - r7, pc}
232 .size __pv_phys_pfn_offset, . -__pv_phys_pfn_offset
238 .size __pv_offset, . -__pv_offset