Lines Matching refs:phdr
20 static bool mdt_phdr_valid(const struct elf32_phdr *phdr) in mdt_phdr_valid() argument
22 if (phdr->p_type != PT_LOAD) in mdt_phdr_valid()
25 if ((phdr->p_flags & QCOM_MDT_TYPE_MASK) == QCOM_MDT_TYPE_HASH) in mdt_phdr_valid()
28 if (!phdr->p_memsz) in mdt_phdr_valid()
43 const struct elf32_phdr *phdr; in qcom_mdt_get_size() local
53 phdr = &phdrs[i]; in qcom_mdt_get_size()
55 if (!mdt_phdr_valid(phdr)) in qcom_mdt_get_size()
58 if (phdr->p_paddr < min_addr) in qcom_mdt_get_size()
59 min_addr = phdr->p_paddr; in qcom_mdt_get_size()
61 if (phdr->p_paddr + phdr->p_memsz > max_addr) in qcom_mdt_get_size()
62 max_addr = ALIGN(phdr->p_paddr + phdr->p_memsz, SZ_4K); in qcom_mdt_get_size()
135 const struct elf32_phdr *phdr; in __qcom_mdt_load() local
182 phdr = &phdrs[i]; in __qcom_mdt_load()
184 if (!mdt_phdr_valid(phdr)) in __qcom_mdt_load()
187 if (phdr->p_flags & QCOM_MDT_RELOCATABLE) in __qcom_mdt_load()
190 if (phdr->p_paddr < min_addr) in __qcom_mdt_load()
191 min_addr = phdr->p_paddr; in __qcom_mdt_load()
193 if (phdr->p_paddr + phdr->p_memsz > max_addr) in __qcom_mdt_load()
194 max_addr = ALIGN(phdr->p_paddr + phdr->p_memsz, SZ_4K); in __qcom_mdt_load()
221 phdr = &phdrs[i]; in __qcom_mdt_load()
223 if (!mdt_phdr_valid(phdr)) in __qcom_mdt_load()
226 offset = phdr->p_paddr - mem_reloc; in __qcom_mdt_load()
227 if (offset < 0 || offset + phdr->p_memsz > mem_size) { in __qcom_mdt_load()
233 if (phdr->p_filesz > phdr->p_memsz) { in __qcom_mdt_load()
243 if (phdr->p_filesz && phdr->p_offset < fw->size) { in __qcom_mdt_load()
245 if (phdr->p_offset + phdr->p_filesz > fw->size) { in __qcom_mdt_load()
253 memcpy(ptr, fw->data + phdr->p_offset, phdr->p_filesz); in __qcom_mdt_load()
254 } else if (phdr->p_filesz) { in __qcom_mdt_load()
258 ptr, phdr->p_filesz); in __qcom_mdt_load()
264 if (seg_fw->size != phdr->p_filesz) { in __qcom_mdt_load()
276 if (phdr->p_memsz > phdr->p_filesz) in __qcom_mdt_load()
277 memset(ptr + phdr->p_filesz, 0, phdr->p_memsz - phdr->p_filesz); in __qcom_mdt_load()