/* | |
* Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. | |
* | |
* SPDX-License-Identifier: BSD-3-Clause | |
*/ | |
.globl rom_lib_init | |
.extern __DATA_RAM_START__, __DATA_ROM_START__, __DATA_RAM_END__ | |
.extern memset, memcpy | |
rom_lib_init: | |
cmp w0, #1 | |
mov w0, #0 | |
b.le 1f | |
ret | |
1: stp x29, x30, [sp, #-16]! | |
adrp x0, __DATA_RAM_START__ | |
adrp x1, __DATA_ROM_START__ | |
add x1, x1, :lo12:__DATA_ROM_START__ | |
adrp x2, __DATA_RAM_END__ | |
add x2, x2, :lo12:__DATA_RAM_END__ | |
sub x2, x2, x0 | |
bl memcpy | |
adrp x0,__BSS_START__ | |
add x0, x0, :lo12:__BSS_START__ | |
mov x1, #0 | |
adrp x2, __BSS_END__ | |
add x2, x2, :lo12:__BSS_END__ | |
sub x2, x2, x0 | |
bl memset | |
ldp x29, x30, [sp], #16 | |
mov w0, #1 | |
ret |