You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
698 B
37 lines
698 B
/*
|
|
* 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
|