blob: 5556f42eada48c65ce5404741f7b25fb2f3b93ef [file] [log] [blame]
/*
* Copyright (c) 2025 Renesas Electronics Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/devicetree.h>
#include <zephyr/linker/sections.h>
/* Require CONFIG_XIP=n */
#define ROM_START (CONFIG_FLASH_BASE_ADDRESS + DT_REG_ADDR(DT_CHOSEN(zephyr_code_partition)))
#define RAM_START CONFIG_SRAM_BASE_ADDRESS
#define APP_SIZE _flash_used
_ASM_FILE_PROLOGUE
GTEXT(loader_program)
/*
* Loader program
*/
SECTION_FUNC(loader_text, loader_program)
ldr r0, =ROM_START // Src in ROM
ldr r1, =RAM_START // Des in RAM
ldr r2, =APP_SIZE
cmp r2, #0
beq exit
loop:
ldrb r3, [r0], #1 // Load byte from src and increment src pointer
strb r3, [r1], #1 // Store byte to des and increment des pointer
subs r2, r2, #1 // Decrement size and updates the condition flags
bne loop // If size is not 0, repeat loop
done:
dsb sy
ldr pc, =__start
exit:
wfi