diff gsm-fw/sysglue/sysinit.S @ 143:afceeeb2cba1

Our nuc-fw is destined to become gsm-fw, so I went ahead and did the big hg mv
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Tue, 12 Nov 2013 05:35:48 +0000
parents nuc-fw/sysglue/sysinit.S@2c5160a9d652
children f05ae34f7ca0
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsm-fw/sysglue/sysinit.S	Tue Nov 12 05:35:48 2013 +0000
@@ -0,0 +1,51 @@
+/*
+ * This assembly module, which puts bits of code into several different
+ * sections, contains those essential entry point etc bits which are common
+ * to both the regular flashable build and the fc-xram development build.
+ */
+
+	.section	iram.vectors,"ax",%progbits
+	.code	32
+/* no useful handlers for the 5 error exceptions yet */
+	b	.
+	b	.
+	b	.
+	b	.
+	b	.
+/* IRQ */
+	b	_INT_IRQ
+/* FIQ */
+	b	_INT_FIQ
+
+	.section	xip.text,"ax",%progbits
+	.code	32
+	.globl	_FlashorXram_entry
+_FlashorXram_entry:
+/* first order of business: copy iram.text to where it's supposed to be */
+	ldr	r8, =__iramtext_flash_addr
+	ldr	r9, =__iramtext_ram_addr
+	ldr	r10, =__iramtext_size
+1:	ldmia	r8!, {r0-r7}
+	stmia	r9!, {r0-r7}
+	subs	r10, r10, #0x20
+	bhi	1b
+/* now we can call any function w/o worry as to where it lives */
+/* clear int.bss and ext.bss, using bzero() from libc */
+	ldr	r0, =__intbss_start
+	ldr	r1, =__intbss_size
+	bl	bzero
+	ldr	r0, =__extbss_start
+	ldr	r1, =__extbss_size
+	bl	bzero
+/* we can start Nucleus now! */
+	b	INT_Initialize
+
+/*
+ * riviera/support/exception.c references exit()
+ * The following kludge will allow us to pass the link for the time being
+ * until we can find a better solution, such as hooking into DAR maybe.
+ */
+
+	.globl	exit
+exit:
+	b	.