Rev 2071 | Rev 2089 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2071 | Rev 2076 | ||
|---|---|---|---|
| Line 48... | Line 48... | ||
| 48 | #include <align.h> |
48 | #include <align.h> |
| 49 | #include <memstr.h> |
49 | #include <memstr.h> |
| 50 | #include <macros.h> |
50 | #include <macros.h> |
| 51 | #include <arch.h> |
51 | #include <arch.h> |
| 52 | 52 | ||
| - | 53 | #ifdef CONFIG_VIRT_IDX_DCACHE |
|
| - | 54 | #include <arch/mm/cache.h> |
|
| - | 55 | #endif |
|
| - | 56 | ||
| 53 | static int elf_page_fault(as_area_t *area, uintptr_t addr, pf_access_t access); |
57 | static int elf_page_fault(as_area_t *area, uintptr_t addr, pf_access_t access); |
| 54 | static void elf_frame_free(as_area_t *area, uintptr_t page, uintptr_t frame); |
58 | static void elf_frame_free(as_area_t *area, uintptr_t page, uintptr_t frame); |
| 55 | static void elf_share(as_area_t *area); |
59 | static void elf_share(as_area_t *area); |
| 56 | 60 | ||
| 57 | mem_backend_t elf_backend = { |
61 | mem_backend_t elf_backend = { |
| Line 217... | Line 221... | ||
| 217 | if (entry->p_flags & PF_W) { |
221 | if (entry->p_flags & PF_W) { |
| 218 | /* |
222 | /* |
| 219 | * Free the frame with the copy of writable segment data. |
223 | * Free the frame with the copy of writable segment data. |
| 220 | */ |
224 | */ |
| 221 | frame_free(frame); |
225 | frame_free(frame); |
| - | 226 | #ifdef CONFIG_VIRT_IDX_DCACHE |
|
| - | 227 | dcache_flush_frame(page, frame); |
|
| - | 228 | #endif |
|
| 222 | } |
229 | } |
| 223 | } else { |
230 | } else { |
| 224 | /* |
231 | /* |
| 225 | * The frame is either anonymous memory or the mixed case (i.e. lower |
232 | * The frame is either anonymous memory or the mixed case (i.e. lower |
| 226 | * part is backed by the ELF image and the upper is anonymous). |
233 | * part is backed by the ELF image and the upper is anonymous). |
| 227 | * In any case, a frame needs to be freed. |
234 | * In any case, a frame needs to be freed. |
| 228 | */ |
235 | */ |
| 229 | frame_free(frame); |
236 | frame_free(frame); |
| - | 237 | #ifdef CONFIG_VIRT_IDX_DCACHE |
|
| - | 238 | dcache_flush_frame(page, frame); |
|
| - | 239 | #endif |
|
| 230 | } |
240 | } |
| 231 | } |
241 | } |
| 232 | 242 | ||
| 233 | /** Share ELF image backed address space area. |
243 | /** Share ELF image backed address space area. |
| 234 | * |
244 | * |