Move to using a common arm_init.S. These things are more similar than

different at this point.
This commit is contained in:
Warner Losh 2006-11-16 00:53:28 +00:00
parent a2288572aa
commit e2302bcc3d
8 changed files with 26 additions and 248 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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