mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Move to using a common arm_init.S. These things are more similar than
different at this point.
This commit is contained in:
parent
a2288572aa
commit
e2302bcc3d
8 changed files with 26 additions and 248 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
Loading…
Reference in a new issue