diff options
author | imp <imp@FreeBSD.org> | 2006-11-16 00:53:28 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2006-11-16 00:53:28 +0000 |
commit | 96a7724b943103cd80cc0bdf14566e522f72c2f5 (patch) | |
tree | 0506cd911a44f3a0eef117cdaebc29a2a6efa183 /sys/boot/arm | |
parent | 1d68e9938f1757caf2b9c671e63f018c37819ba8 (diff) | |
download | FreeBSD-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/Makefile | 5 | ||||
-rw-r--r-- | sys/boot/arm/at91/boot0/arm_init.s | 105 | ||||
-rw-r--r-- | sys/boot/arm/at91/boot0iic/Makefile | 6 | ||||
-rw-r--r-- | sys/boot/arm/at91/boot0spi/Makefile | 5 | ||||
-rw-r--r-- | sys/boot/arm/at91/bootiic/Makefile | 4 | ||||
-rw-r--r-- | sys/boot/arm/at91/bootiic/arm_init.S | 120 | ||||
-rw-r--r-- | sys/boot/arm/at91/bootspi/Makefile | 3 | ||||
-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 |