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()
38 const struct elf32_phdr *phdr = &phdrs[segment]; in mdt_load_split_segment() local
52 ptr, phdr->p_filesz); in mdt_load_split_segment()
59 if (seg_fw->size != phdr->p_filesz) { in mdt_load_split_segment()
81 const struct elf32_phdr *phdr; in qcom_mdt_get_size() local
91 phdr = &phdrs[i]; in qcom_mdt_get_size()
93 if (!mdt_phdr_valid(phdr)) in qcom_mdt_get_size()
96 if (phdr->p_paddr < min_addr) in qcom_mdt_get_size()
97 min_addr = phdr->p_paddr; in qcom_mdt_get_size()
99 if (phdr->p_paddr + phdr->p_memsz > max_addr) in qcom_mdt_get_size()
100 max_addr = ALIGN(phdr->p_paddr + phdr->p_memsz, SZ_4K); in qcom_mdt_get_size()
209 const struct elf32_phdr *phdr; in qcom_mdt_pas_init() local
223 phdr = &phdrs[i]; in qcom_mdt_pas_init()
225 if (!mdt_phdr_valid(phdr)) in qcom_mdt_pas_init()
228 if (phdr->p_flags & QCOM_MDT_RELOCATABLE) in qcom_mdt_pas_init()
231 if (phdr->p_paddr < min_addr) in qcom_mdt_pas_init()
232 min_addr = phdr->p_paddr; in qcom_mdt_pas_init()
234 if (phdr->p_paddr + phdr->p_memsz > max_addr) in qcom_mdt_pas_init()
235 max_addr = ALIGN(phdr->p_paddr + phdr->p_memsz, SZ_4K); in qcom_mdt_pas_init()
301 const struct elf32_phdr *phdr; in __qcom_mdt_load() local
320 phdr = &phdrs[i]; in __qcom_mdt_load()
322 if (!mdt_phdr_valid(phdr)) in __qcom_mdt_load()
325 if (phdr->p_flags & QCOM_MDT_RELOCATABLE) in __qcom_mdt_load()
328 if (phdr->p_paddr < min_addr) in __qcom_mdt_load()
329 min_addr = phdr->p_paddr; in __qcom_mdt_load()
347 phdr = &phdrs[i]; in __qcom_mdt_load()
349 if (!mdt_phdr_valid(phdr)) in __qcom_mdt_load()
352 offset = phdr->p_paddr - mem_reloc; in __qcom_mdt_load()
353 if (offset < 0 || offset + phdr->p_memsz > mem_size) { in __qcom_mdt_load()
359 if (phdr->p_filesz > phdr->p_memsz) { in __qcom_mdt_load()
369 if (phdr->p_filesz && !is_split) { in __qcom_mdt_load()
371 if (phdr->p_offset + phdr->p_filesz > fw->size) { in __qcom_mdt_load()
378 memcpy(ptr, fw->data + phdr->p_offset, phdr->p_filesz); in __qcom_mdt_load()
379 } else if (phdr->p_filesz) { in __qcom_mdt_load()
386 if (phdr->p_memsz > phdr->p_filesz) in __qcom_mdt_load()
387 memset(ptr + phdr->p_filesz, 0, phdr->p_memsz - phdr->p_filesz); in __qcom_mdt_load()