commit 5715c330da8a5f1d7515c25f5a80304f44292893
parent cff84b4e06fca8136953f5a96ab9ec7fc3a057e7
Author: Roberto Vargas <roberto.vargas@arm.com>
Date: Fri, 16 Nov 2018 16:21:02 +0000
[rmode/rom.c] Factorize main()
Change-Id: I61a921b0e31927c352f9600e2efec9cc4e1f8231
Diffstat:
1 file changed, 22 insertions(+), 17 deletions(-)
diff --git a/arch/rmode/rom.c b/arch/rmode/rom.c
@@ -6,34 +6,39 @@
#include "sysreg.h"
#include "arch.h"
-void
-main(void *text, void *ram, size_t ramsiz)
+static void
+ibss(void *text)
{
- struct trapframe frame;
- char *bp = ram;
- size_t bsssiz;
-
- bsssiz = (sizeof(struct bssmap) + 15) & ~15;
-
- memset(ram, 0, bsssiz);
- memset(&frame, 0, sizeof(frame));
-
bss->text = text;
bss->backtrace = 1;
bss->dumpstack = 1;
bss->uartbase = (void *)UARTBASE;
+}
+
+static void
+imach(struct trapframe *fp, void *sp)
+{
+ memset(fp, 0, sizeof(*fp));
+ fp->sp = sp;
+ fp->elr = (void *) rsysreg(RVBAR_EL3);
+ fp->spsr = 0xf << 6 | 0xd;
+
+ invicache();
+ invdcache();
+}
- frame.sp = bp + ramsiz;
- frame.elr = (void *) rsysreg(RVBAR_EL3);
- frame.spsr = 0xf << 6 | 0xd;
+void
+main(void *text, void *ram, size_t ramsiz)
+{
+ struct trapframe frame;
+ char *sp = (char *) ram + ramsiz;
+ ibss(text);
+ imach(&frame, sp);
uartinit(UARTCLK, UARTBAUDRATE);
enaint();
barrier(ISB);
- invicache();
- invdcache();
-
dbg("romfw: text = %p, ram = %p, ramsiz = 0x%llx\n",
text, ram, (unsigned long long)ramsiz);