| /* |
| * Copyright (c) 2020 EPAM Systems |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <linker/sections.h> |
| #include <arch/cpu.h> |
| #include "mmu.h" |
| |
| #if CONFIG_MMU_PAGE_SIZE == 4096 || defined(CONFIG_ARM_MPU) |
| #define HEADER_PGSIZE 1 |
| #elif CONFIG_MMU_PAGE_SIZE == 16384 |
| #define HEADER_PGSIZE 2 |
| #elif CONFIG_MMU_PAGE_SIZE == 65536 |
| #define HEADER_PGSIZE 3 |
| #else |
| #define HEADER_PGSIZE 0 |
| #warning "Can't determine page size for header flags" |
| #endif |
| |
| #define HEADER_FLAGS (HEADER_PGSIZE << 1) |
| |
| _ASM_FILE_PROLOGUE |
| |
| SECTION_SUBSEC_FUNC(image_header,_image_header_section,_image_header) |
| b __start // branch to kernel start |
| .long 0 // reserved |
| .quad 0 // Image load offset from start |
| // of RAM, little-endian |
| |
| .quad _flash_used // Effective size of kernel |
| // image, little-endian |
| |
| .quad HEADER_FLAGS // Informative flags, |
| // little-endian |
| |
| .quad 0 // reserved |
| .quad 0 // reserved |
| .quad 0 // reserved |
| .ascii "ARM\x64" // Magic number |
| .long 0 // reserved |