summaryrefslogtreecommitdiffstats
path: root/sys/boot/arm
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2006-11-16 00:53:28 +0000
committerimp <imp@FreeBSD.org>2006-11-16 00:53:28 +0000
commit96a7724b943103cd80cc0bdf14566e522f72c2f5 (patch)
tree0506cd911a44f3a0eef117cdaebc29a2a6efa183 /sys/boot/arm
parent1d68e9938f1757caf2b9c671e63f018c37819ba8 (diff)
downloadFreeBSD-src-96a7724b943103cd80cc0bdf14566e522f72c2f5.zip
FreeBSD-src-96a7724b943103cd80cc0bdf14566e522f72c2f5.tar.gz
Move to using a common arm_init.S. These things are more similar than
different at this point.
Diffstat (limited to 'sys/boot/arm')
-rw-r--r--sys/boot/arm/at91/boot0/Makefile5
-rw-r--r--sys/boot/arm/at91/boot0/arm_init.s105
-rw-r--r--sys/boot/arm/at91/boot0iic/Makefile6
-rw-r--r--sys/boot/arm/at91/boot0spi/Makefile5
-rw-r--r--sys/boot/arm/at91/bootiic/Makefile4
-rw-r--r--sys/boot/arm/at91/bootiic/arm_init.S120
-rw-r--r--sys/boot/arm/at91/bootspi/Makefile3
-rw-r--r--sys/boot/arm/at91/libat91/arm_init.S (renamed from sys/boot/arm/at91/bootspi/arm_init.S)26
8 files changed, 26 insertions, 248 deletions
diff --git a/sys/boot/arm/at91/boot0/Makefile b/sys/boot/arm/at91/boot0/Makefile
index 884c8c8..a13a620 100644
--- a/sys/boot/arm/at91/boot0/Makefile
+++ b/sys/boot/arm/at91/boot0/Makefile
@@ -1,11 +1,14 @@
# $FreeBSD$
+.PATH: ${.CURDIR}/../libat91
+
P=boot0
FILES=${P}
-SRCS=arm_init.s main.c
+SRCS=arm_init.S main.c
NO_MAN=
LDFLAGS=-e 0 -T ${.CURDIR}/linker.cfg
OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
.include <bsd.prog.mk>
+CFLAGS+=-DBOOT_BOOT0
diff --git a/sys/boot/arm/at91/boot0/arm_init.s b/sys/boot/arm/at91/boot0/arm_init.s
deleted file mode 100644
index 58c9099..0000000
--- a/sys/boot/arm/at91/boot0/arm_init.s
+++ /dev/null
@@ -1,105 +0,0 @@
-/*-
- * Copyright (c) 2006 M. Warner Losh. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software is derived from code provided by Kwikbyte with the
- * following information:
- *
- * Initialization for C-environment and basic operation. Adapted from
- * ATMEL cstartup.s.
- *
- * No warranty, expressed or implied, is included with this software. It is
- * provided "AS IS" and no warranty of any kind including statutory or aspects
- * relating to merchantability or fitness for any purpose is provided. All
- * intellectual property rights of others is maintained with the respective
- * owners. This software is not copyrighted and is intended for reference
- * only.
- *
- * $FreeBSD$
- */
-
- .equ ARM_MODE_USER, 0x10
- .equ ARM_MODE_FIQ, 0x11
- .equ ARM_MODE_IRQ, 0x12
- .equ ARM_MODE_SVC, 0x13
- .equ ARM_MODE_ABORT, 0x17
- .equ ARM_MODE_UNDEF, 0x1B
- .equ ARM_MODE_SYS, 0x1F
-
- .equ I_BIT, 0x80
- .equ F_BIT, 0x40
- .equ T_BIT, 0x20
-
-/*
- * Stack definitions
- *
- * Start near top of internal RAM.
- */
-
- .equ END_INT_SRAM, 0x4000
- .equ SVC_STACK_START, (END_INT_SRAM - 0x4)
- .equ SVC_STACK_USE, 0x21800000
-
-start:
-
-/* vectors - must reside at address 0 */
-/* the format of this table is defined in the datasheet */
- B InitReset @; reset
-undefvec:
- B undefvec @; Undefined Instruction
-swivec:
- B swivec @; Software Interrupt
-pabtvec:
- B pabtvec @; Prefetch Abort
-dabtvec:
- B dabtvec @; Data Abort
-rsvdvec:
- B rsvdvec
-irqvec:
- ldr pc, [pc,#-0xF20] @; IRQ : read the AIC
-fiqvec:
- B fiqvec @; FIQ
-
-
-InitReset:
-
-/* Set stack and init for SVC */
- ldr r1, = SVC_STACK_START
- mov sp, r1 @; Init stack SYS
-
- msr cpsr_c, #(ARM_MODE_SVC | I_BIT | F_BIT)
- mov sp, r1 @ ; Init stack SYS
-
-/* Perform system initialization */
-
- .extern _init
- bl _init
-
-/* Start execution at main */
-
- .extern main
- bl main
-
-/* main should not return. If it does, spin forever */
-
-infiniteLoop:
- b infiniteLoop
diff --git a/sys/boot/arm/at91/boot0iic/Makefile b/sys/boot/arm/at91/boot0iic/Makefile
index 503c98c..44f4470 100644
--- a/sys/boot/arm/at91/boot0iic/Makefile
+++ b/sys/boot/arm/at91/boot0iic/Makefile
@@ -1,12 +1,14 @@
# $FreeBSD$
-.PATH: ${.CURDIR}/../boot0
+.PATH: ${.CURDIR}/../libat91
P=boot0iic
FILES=${P}
-SRCS=arm_init.s main.c
+SRCS=arm_init.S main.c
NO_MAN=
LDFLAGS=-e 0 -T ${.CURDIR}/../linker.cfg
OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
.include <bsd.prog.mk>
+
+CFLAGS+=-DBOOT_BOOT0
diff --git a/sys/boot/arm/at91/boot0spi/Makefile b/sys/boot/arm/at91/boot0spi/Makefile
index 0e196cf..eb6c5b5 100644
--- a/sys/boot/arm/at91/boot0spi/Makefile
+++ b/sys/boot/arm/at91/boot0spi/Makefile
@@ -1,13 +1,14 @@
# $FreeBSD$
-.PATH: ${.CURDIR}/../boot0
+.PATH: ${.CURDIR}/../libat91
P=boot0spi
FILES=${P}
-SRCS=arm_init.s main.c
+SRCS=arm_init.S main.c
NO_MAN=
LDFLAGS=-e 0 -T ${.CURDIR}/../linker.cfg
OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
.include <bsd.prog.mk>
+CFLAGS+=-DBOOT_BOOT0
diff --git a/sys/boot/arm/at91/bootiic/Makefile b/sys/boot/arm/at91/bootiic/Makefile
index 11840ec..3983d2b 100644
--- a/sys/boot/arm/at91/bootiic/Makefile
+++ b/sys/boot/arm/at91/bootiic/Makefile
@@ -1,6 +1,6 @@
# $FreeBSD$
-.PATH: ${.CURDIR}/../libat91
+.PATH: ${.CURDIR}/../libat91
P=bootiic
FILES=${P}
@@ -11,4 +11,4 @@ OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
.include <bsd.prog.mk>
-CFLAGS += -DBOOT_IIC
+CFLAGS += -DBOOT_IIC -DBOOT_COMMANDS
diff --git a/sys/boot/arm/at91/bootiic/arm_init.S b/sys/boot/arm/at91/bootiic/arm_init.S
deleted file mode 100644
index 90e5c5c..0000000
--- a/sys/boot/arm/at91/bootiic/arm_init.S
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- *
- * Filename: arm_init.s
- *
- * Initialization for C-environment and basic operation. Adapted from
- * ATMEL cstartup.s.
- *
- * Revision information:
- *
- * 20AUG2004 kb_admin initial creation
- * 12JAN2005 kb_admin updated for 16KB eeprom
- * Atmel stack prevents loading full size at once
- *
- * BEGIN_KBDD_BLOCK
- * No warranty, expressed or implied, is included with this software. It is
- * provided "AS IS" and no warranty of any kind including statutory or aspects
- * relating to merchantability or fitness for any purpose is provided. All
- * intellectual property rights of others is maintained with the respective
- * owners. This software is not copyrighted and is intended for reference
- * only.
- * END_BLOCK
- *
- * $FreeBSD$
- ******************************************************************************/
-
- .equ TWI_EEPROM_SIZE, 0x2000
- .equ ARM_MODE_USER, 0x10
- .equ ARM_MODE_FIQ, 0x11
- .equ ARM_MODE_IRQ, 0x12
- .equ ARM_MODE_SVC, 0x13
- .equ ARM_MODE_ABORT, 0x17
- .equ ARM_MODE_UNDEF, 0x1B
- .equ ARM_MODE_SYS, 0x1F
-
- .equ I_BIT, 0x80
- .equ F_BIT, 0x40
- .equ T_BIT, 0x20
-
-/*
- * Stack definitions
- *
- * Start near top of internal RAM.
- */
-
- .equ END_INT_SRAM, 0x4000
- .equ SVC_STACK_START, (END_INT_SRAM - 0x4)
- .equ SVC_STACK_USE, 0x21800000
-
-start:
-
-/* vectors - must reside at address 0 */
-/* the format of this table is defined in the datasheet */
- B InitReset @; reset
-undefvec:
- B undefvec @; Undefined Instruction
-swivec:
- B swivec @; Software Interrupt
-pabtvec:
- B pabtvec @; Prefetch Abort
-dabtvec:
- B dabtvec @; Data Abort
-rsvdvec:
- .long (TWI_EEPROM_SIZE >> 9)
-irqvec:
- ldr pc, [pc,#-0xF20] @; IRQ : read the AIC
-fiqvec:
- B fiqvec @; FIQ
-
-
-InitReset:
-
-/* Set stack and init for SVC */
- ldr r1, = SVC_STACK_START
- mov sp, r1 @; Init stack SYS
-
- msr cpsr_c, #(ARM_MODE_SVC | I_BIT | F_BIT)
- mov sp, r1 @ ; Init stack SYS
-
-/* Perform system initialization */
-
- .extern _init
-
- bl _init
-
- ldr r1, = SVC_STACK_USE
- mov sp, r1 @ ; Move the stack to SDRAM
-
-/* Start execution at main */
-
- .extern main
-_main:
-__main:
- bl main
-
-/* main should not return. If it does, spin forever */
-
-infiniteLoop:
- b infiniteLoop
-
-/* the following section is used to store boot commands in */
-/* non-volatile memory. */
-
- .global BootCommandSection
-BootCommandSection:
-#ifdef SUPPORT_LINUX
- .string "Bootloader for KB9202 Evaluation Board."
- .string "c 0x20210000 0x10100000 0x80000 "
- .string "m 0 0 0 0 0 0 "
- .string "t 0x20000100 console=ttyS0,115200 root=/dev/ram rw initrd=0x20210000,654933"
- .string "e 0x10000000 "
- .string " "
-#else
- .string "Bootloader for KB9202 Evaluation Board."
- .string "m 42 53 44 0 0 1 "
- .string "ip 206 168 13 194 "
- .string "server_ip 206 168 13 207 "
- .string "tftp 0x20000000 kernel.bin "
- .string "e 0x20000000 "
-#endif
- .space 0x50
diff --git a/sys/boot/arm/at91/bootspi/Makefile b/sys/boot/arm/at91/bootspi/Makefile
index 3f31642..bd7217d 100644
--- a/sys/boot/arm/at91/bootspi/Makefile
+++ b/sys/boot/arm/at91/bootspi/Makefile
@@ -1,6 +1,6 @@
# $FreeBSD$
-.PATH: ${.CURDIR}/../libat91
+.PATH: ${.CURDIR}/../libat91
P=bootspi
FILES=${P}
@@ -14,3 +14,4 @@ OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
.if ${MK_FPGA} == "yes"
CFLAGS += -DTSC_FPGA
.endif
+CFLAGS += -DBOOT_COMMANDS
diff --git a/sys/boot/arm/at91/bootspi/arm_init.S b/sys/boot/arm/at91/libat91/arm_init.S
index cc6f8df..cdc39a7 100644
--- a/sys/boot/arm/at91/bootspi/arm_init.S
+++ b/sys/boot/arm/at91/libat91/arm_init.S
@@ -23,6 +23,7 @@
* $FreeBSD$
******************************************************************************/
+ .equ TWI_EEPROM_SIZE, 0x3000
.equ ARM_MODE_USER, 0x10
.equ ARM_MODE_FIQ, 0x11
.equ ARM_MODE_IRQ, 0x12
@@ -30,7 +31,6 @@
.equ ARM_MODE_ABORT, 0x17
.equ ARM_MODE_UNDEF, 0x1B
.equ ARM_MODE_SYS, 0x1F
-
.equ I_BIT, 0x80
.equ F_BIT, 0x40
.equ T_BIT, 0x20
@@ -40,7 +40,6 @@
*
* Start near top of internal RAM.
*/
-
.equ END_INT_SRAM, 0x4000
.equ SVC_STACK_START, (END_INT_SRAM - 0x4)
.equ SVC_STACK_USE, 0x21800000
@@ -60,7 +59,7 @@ dabtvec:
B dabtvec @; Data Abort
rsvdvec:
#ifdef BOOT_IIC
- .long 12 << 10 @; 12k from iic part
+ .long (TWI_EEPROM_SIZE >> 9)
#else
.long ((1056 << 17) | (13 << 13) | (12 * 2))
#endif
@@ -69,7 +68,6 @@ irqvec:
fiqvec:
B fiqvec @; FIQ
-
InitReset:
/* Set stack and init for SVC */
@@ -82,24 +80,22 @@ InitReset:
/* Perform system initialization */
.extern _init
-
bl _init
-
+#ifndef BOOT_BOOT0
ldr r1, = SVC_STACK_USE
mov sp, r1 @ ; Move the stack to SDRAM
+#endif
/* Start execution at main */
-
.extern main
_main:
__main:
bl main
-
/* main should not return. If it does, spin forever */
-
infiniteLoop:
b infiniteLoop
+#ifdef BOOT_COMMANDS
/* the following section is used to store boot commands in */
/* non-volatile memory. */
@@ -114,12 +110,11 @@ BootCommandSection:
.string " "
#else
#if 1
- .string "Bootloader for KB9202 Evaluation Board."
- .string "m 42 53 44 0 0 1 "
- .string "ip 206 168 13 194 "
- .string "server_ip 206 168 13 207 "
- .string "tftp 0x20000000 kernel.bin "
- .string "e 0x20000000 "
+ .string "m 42 53 44 0 0 1"
+ .string "ip 206 168 13 194"
+ .string "server_ip 206 168 13 207"
+ .string "tftp 0x20000000 kernel.bin"
+ .string "e 0x20000000"
#else
.string "m 42 53 44 0 0 1"
.string "k 0x20000000"
@@ -127,3 +122,4 @@ BootCommandSection:
#endif
.word 0
#endif
+#endif
OpenPOWER on IntegriCloud