43 lines
976 B
ArmAsm
43 lines
976 B
ArmAsm
/*
|
|
* 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
|
|
#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
|