Lines Matching refs:phdr
52 static bool mdt_phdr_loadable(const struct elf32_phdr *phdr) in mdt_phdr_loadable() argument
54 if (phdr->p_type != PT_LOAD) in mdt_phdr_loadable()
57 if ((phdr->p_flags & QCOM_MDT_TYPE_MASK) == QCOM_MDT_TYPE_HASH) in mdt_phdr_loadable()
60 if (!phdr->p_memsz) in mdt_phdr_loadable()
70 const struct elf32_phdr *phdr = &phdrs[segment]; in mdt_load_split_segment() local
83 ptr, phdr->p_filesz); in mdt_load_split_segment()
89 if (seg_fw->size != phdr->p_filesz) { in mdt_load_split_segment()
110 const struct elf32_phdr *phdr; in qcom_mdt_get_size() local
123 phdr = &phdrs[i]; in qcom_mdt_get_size()
125 if (!mdt_phdr_loadable(phdr)) in qcom_mdt_get_size()
128 if (phdr->p_paddr < min_addr) in qcom_mdt_get_size()
129 min_addr = phdr->p_paddr; in qcom_mdt_get_size()
131 if (phdr->p_paddr + phdr->p_memsz > max_addr) in qcom_mdt_get_size()
132 max_addr = ALIGN(phdr->p_paddr + phdr->p_memsz, SZ_4K); in qcom_mdt_get_size()
244 const struct elf32_phdr *phdr; in qcom_mdt_pas_init() local
261 phdr = &phdrs[i]; in qcom_mdt_pas_init()
263 if (!mdt_phdr_loadable(phdr)) in qcom_mdt_pas_init()
266 if (phdr->p_flags & QCOM_MDT_RELOCATABLE) in qcom_mdt_pas_init()
269 if (phdr->p_paddr < min_addr) in qcom_mdt_pas_init()
270 min_addr = phdr->p_paddr; in qcom_mdt_pas_init()
272 if (phdr->p_paddr + phdr->p_memsz > max_addr) in qcom_mdt_pas_init()
273 max_addr = ALIGN(phdr->p_paddr + phdr->p_memsz, SZ_4K); in qcom_mdt_pas_init()
339 const struct elf32_phdr *phdr; in __qcom_mdt_load() local
361 phdr = &phdrs[i]; in __qcom_mdt_load()
363 if (!mdt_phdr_loadable(phdr)) in __qcom_mdt_load()
366 if (phdr->p_flags & QCOM_MDT_RELOCATABLE) in __qcom_mdt_load()
369 if (phdr->p_paddr < min_addr) in __qcom_mdt_load()
370 min_addr = phdr->p_paddr; in __qcom_mdt_load()
388 phdr = &phdrs[i]; in __qcom_mdt_load()
390 if (!mdt_phdr_loadable(phdr)) in __qcom_mdt_load()
393 offset = phdr->p_paddr - mem_reloc; in __qcom_mdt_load()
394 if (offset < 0 || offset + phdr->p_memsz > mem_size) { in __qcom_mdt_load()
400 if (phdr->p_filesz > phdr->p_memsz) { in __qcom_mdt_load()
410 if (phdr->p_filesz && !is_split) { in __qcom_mdt_load()
412 if (phdr->p_offset + phdr->p_filesz > fw->size) { in __qcom_mdt_load()
419 memcpy(ptr, fw->data + phdr->p_offset, phdr->p_filesz); in __qcom_mdt_load()
420 } else if (phdr->p_filesz) { in __qcom_mdt_load()
427 if (phdr->p_memsz > phdr->p_filesz) in __qcom_mdt_load()
428 memset(ptr + phdr->p_filesz, 0, phdr->p_memsz - phdr->p_filesz); in __qcom_mdt_load()