Lines Matching full:offset
103 uint32_t sym_base_addr, const char *sym_name, int32_t *offset) in prel31_decode() argument
107 *offset = sign_extend(*(int32_t *)loc, SHIFT_PREL31_SIGN); in prel31_decode()
108 *offset += sym_base_addr - loc; in prel31_decode()
109 if (*offset >= PREL31_UPPER_BOUNDARY || *offset < PREL31_LOWER_BOUNDARY) { in prel31_decode()
120 static inline void prel31_reloc(uint32_t loc, int32_t *offset) in prel31_reloc() argument
123 *(uint32_t *)loc |= *offset & GENMASK(30, 0); in prel31_reloc()
130 int32_t offset; in prel31_handler() local
132 ret = prel31_decode(reloc_type, loc, sym_base_addr, sym_name, &offset); in prel31_handler()
134 prel31_reloc(loc, &offset); in prel31_handler()
141 uint32_t sym_base_addr, const char *sym_name, int32_t *offset) in jumps_decode() argument
145 *offset = MEM2ARMOPCODE(*(uint32_t *)loc); in jumps_decode()
146 *offset = (*offset & MASK_BRANCH_OFFSET) << SHIFT_BRANCH_OFFSET; in jumps_decode()
147 *offset = sign_extend(*offset, SHIFT_JUMPS_SIGN); in jumps_decode()
148 *offset += sym_base_addr - loc; in jumps_decode()
149 if (*offset >= JUMP_LOWER_BOUNDARY || *offset <= JUMP_UPPER_BOUNDARY) { in jumps_decode()
160 static inline void jumps_reloc(uint32_t loc, int32_t *offset) in jumps_reloc() argument
162 *offset >>= SHIFT_BRANCH_OFFSET; in jumps_reloc()
163 *offset &= MASK_BRANCH_OFFSET; in jumps_reloc()
166 *(uint32_t *)loc |= OPCODE2ARMMEM(*offset); in jumps_reloc()
173 int32_t offset; in jumps_handler() local
175 ret = jumps_decode(reloc_type, loc, sym_base_addr, sym_name, &offset); in jumps_handler()
177 jumps_reloc(loc, &offset); in jumps_handler()
186 int32_t offset; in movs_handler() local
189 offset = tmp = MEM2ARMOPCODE(*(uint32_t *)loc); in movs_handler()
190 offset = ((offset & MASK_MOV_RN) >> SHIFT_MOV_RN) | (offset & MASK_MOV_OPERAND2); in movs_handler()
191 offset = sign_extend(offset, SHIFT_MOVS_SIGN); in movs_handler()
193 offset += sym_base_addr; in movs_handler()
195 offset -= loc; in movs_handler()
198 offset >>= 16; in movs_handler()
202 tmp |= ((offset & MASK_MOV_RD) << SHIFT_MOV_RD) | (offset & MASK_MOV_OPERAND2); in movs_handler()
208 uint32_t sym_base_addr, const char *sym_name, int32_t *offset, in thm_jumps_decode() argument
221 *offset = (sign << SHIFT_THM_JUMPS_SIGN) | in thm_jumps_decode()
226 *offset = sign_extend(*offset, SHIFT_THM_JUMPS_SIGN); in thm_jumps_decode()
227 *offset += sym_base_addr - loc; in thm_jumps_decode()
229 if (*offset >= THM_JUMP_LOWER_BOUNDARY || *offset <= THM_JUMP_UPPER_BOUNDARY) { in thm_jumps_decode()
240 static inline void thm_jumps_reloc(uint32_t loc, int32_t *offset, in thm_jumps_reloc() argument
245 sign = (*offset >> SHIFT_THM_JUMPS_SIGN) & 1; in thm_jumps_reloc()
246 j_one = sign ^ (~(*offset >> SHIFT_THM_BL_J1) & 1); in thm_jumps_reloc()
247 j_two = sign ^ (~(*offset >> SHIFT_THM_BL_J2) & 1); in thm_jumps_reloc()
249 ((*offset >> SHIFT_THM_BW_IMM10) & MASK_THM_BW_IMM10)); in thm_jumps_reloc()
252 ((*offset >> 1) & MASK_THM_BL_IMM11)); in thm_jumps_reloc()
262 int32_t offset; in thm_jumps_handler() local
265 ret = thm_jumps_decode(reloc_type, loc, sym_base_addr, sym_name, &offset, &upper, &lower); in thm_jumps_handler()
267 thm_jumps_reloc(loc, &offset, &upper, &lower); in thm_jumps_handler()
276 int32_t offset; in thm_movs_handler() local
283 offset = ((upper & MASK_THM_MOV_IMM4) << SHIFT_THM_MOV_IMM4) | in thm_movs_handler()
286 offset = sign_extend(offset, SHIFT_THM_MOVS_SIGN); in thm_movs_handler()
287 offset += sym_base_addr; in thm_movs_handler()
290 offset -= loc; in thm_movs_handler()
293 offset >>= 16; in thm_movs_handler()
297 ((offset & (MASK_THM_MOV_IMM4<<SHIFT_THM_MOV_IMM4)) >> SHIFT_THM_MOV_IMM4) | in thm_movs_handler()
298 ((offset & (MASK_THM_MOV_I<<SHIFT_THM_MOV_I)) >> SHIFT_THM_MOV_I)); in thm_movs_handler()
300 ((offset & (MASK_THM_MOV_IMM3>>SHIFT_THM_MOV_IMM3)) << SHIFT_THM_MOV_IMM3) | in thm_movs_handler()
301 (offset & MASK_THM_MOV_IMM8)); in thm_movs_handler()