xref: /rk3399_ARM-atf/lib/romlib/init.s (revision 5accce5bcc211c08e80c638acbd01099af81cc37)
1*5accce5bSRoberto Vargas/*
2*5accce5bSRoberto Vargas * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
3*5accce5bSRoberto Vargas *
4*5accce5bSRoberto Vargas * SPDX-License-Identifier: BSD-3-Clause
5*5accce5bSRoberto Vargas */
6*5accce5bSRoberto Vargas
7*5accce5bSRoberto Vargas	.globl	rom_lib_init
8*5accce5bSRoberto Vargas	.extern	__DATA_RAM_START__, __DATA_ROM_START__, __DATA_SIZE__
9*5accce5bSRoberto Vargas	.extern	memset, memcpy
10*5accce5bSRoberto Vargas
11*5accce5bSRoberto Vargasrom_lib_init:
12*5accce5bSRoberto Vargas	cmp	w0, #1
13*5accce5bSRoberto Vargas	mov	w0, #0
14*5accce5bSRoberto Vargas	b.le	1f
15*5accce5bSRoberto Vargas	ret
16*5accce5bSRoberto Vargas
17*5accce5bSRoberto Vargas1:	stp	x29, x30, [sp, #-16]!
18*5accce5bSRoberto Vargas	adrp	x0, __DATA_RAM_START__
19*5accce5bSRoberto Vargas	ldr	x1,= __DATA_ROM_START__
20*5accce5bSRoberto Vargas	ldr	x2, =__DATA_SIZE__
21*5accce5bSRoberto Vargas	bl	memcpy
22*5accce5bSRoberto Vargas
23*5accce5bSRoberto Vargas	ldr	x0, =__BSS_START__
24*5accce5bSRoberto Vargas	mov	x1, #0
25*5accce5bSRoberto Vargas	ldr	x2, =__BSS_SIZE__
26*5accce5bSRoberto Vargas	bl	memset
27*5accce5bSRoberto Vargas	ldp	x29, x30, [sp], #16
28*5accce5bSRoberto Vargas
29*5accce5bSRoberto Vargas	mov	w0, #1
30*5accce5bSRoberto Vargas	ret
31