mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-12 06:12:58 +00:00
061ae4c0bb
The assembly directive ".rept ... .endr" allows us to write the init_page_table much shorter. To make things further simpler, set the text and stack area as Normal Memory, and the other sections as Device attribute. Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
26 lines
660 B
ArmAsm
26 lines
660 B
ArmAsm
#include <config.h>
|
|
#include <linux/linkage.h>
|
|
|
|
/* page table */
|
|
#define NR_SECTIONS 4096
|
|
#define SECTION_SHIFT 20
|
|
#define DEVICE 0x00002002 /* Non-shareable Device */
|
|
#define NORMAL 0x0000000e /* Normal Memory Write-Back, No Write-Allocate */
|
|
|
|
#define TEXT_SECTION ((CONFIG_SPL_TEXT_BASE) >> (SECTION_SHIFT))
|
|
#define STACK_SECTION ((CONFIG_SYS_INIT_SP_ADDR) >> (SECTION_SHIFT))
|
|
|
|
.section ".rodata"
|
|
.align 14
|
|
ENTRY(init_page_table)
|
|
section = 0
|
|
.rept NR_SECTIONS
|
|
.if section == TEXT_SECTION || section == STACK_SECTION
|
|
attr = NORMAL
|
|
.else
|
|
attr = DEVICE
|
|
.endif
|
|
.word (section << SECTION_SHIFT) | attr
|
|
section = section + 1
|
|
.endr
|
|
END(init_page_table)
|