Cleanup whitespace, remove old author tag
Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
This commit is contained in:
parent
bb1d2a9453
commit
e7672be573
@ -1,12 +1,10 @@
|
||||
/*
|
||||
* Head of the kernel - alter with care
|
||||
*
|
||||
* Copyright (C) 2000, 2001 Axis Communications AB
|
||||
* Copyright (C) 2000, 2001, 2010 Axis Communications AB
|
||||
*
|
||||
* Authors: Bjorn Wesen (bjornw@axis.com)
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#define ASSEMBLER_MACROS_ONLY
|
||||
/* The IO_* macros use the ## token concatenation operator, so
|
||||
-traditional must not be used when assembling this file. */
|
||||
@ -18,15 +16,15 @@
|
||||
|
||||
#define START_ETHERNET_CLOCK IO_STATE(R_NETWORK_GEN_CONFIG, enable, on) |\
|
||||
IO_STATE(R_NETWORK_GEN_CONFIG, phy, mii_clk)
|
||||
|
||||
|
||||
;; exported symbols
|
||||
|
||||
|
||||
.globl etrax_irv
|
||||
.globl romfs_start
|
||||
.globl romfs_length
|
||||
.globl romfs_in_flash
|
||||
.globl swapper_pg_dir
|
||||
|
||||
|
||||
.text
|
||||
|
||||
;; This is the entry point of the kernel. We are in supervisor mode.
|
||||
@ -35,10 +33,10 @@
|
||||
;; put a nop (2 bytes) here first so we dont accidentally skip the di
|
||||
;;
|
||||
;; NOTICE! The registers r8 and r9 are used as parameters carrying
|
||||
;; information from the decompressor (if the kernel was compressed).
|
||||
;; information from the decompressor (if the kernel was compressed).
|
||||
;; They should not be used in the code below until read.
|
||||
|
||||
nop
|
||||
|
||||
nop
|
||||
di
|
||||
|
||||
;; First setup the kseg_c mapping from where the kernel is linked
|
||||
@ -58,19 +56,19 @@
|
||||
|
||||
#ifdef CONFIG_CRIS_LOW_MAP
|
||||
; kseg mappings, temporary map of 0xc0->0x40
|
||||
move.d IO_FIELD (R_MMU_KBASE_HI, base_c, 4) \
|
||||
move.d IO_FIELD (R_MMU_KBASE_HI, base_c, 4) \
|
||||
| IO_FIELD (R_MMU_KBASE_HI, base_b, 0xb) \
|
||||
| IO_FIELD (R_MMU_KBASE_HI, base_9, 9) \
|
||||
| IO_FIELD (R_MMU_KBASE_HI, base_8, 8), $r0
|
||||
move.d $r0, [R_MMU_KBASE_HI]
|
||||
|
||||
; temporary map of 0x40->0x40 and 0x60->0x40
|
||||
move.d IO_FIELD (R_MMU_KBASE_LO, base_6, 4) \
|
||||
; temporary map of 0x40->0x40 and 0x60->0x40
|
||||
move.d IO_FIELD (R_MMU_KBASE_LO, base_6, 4) \
|
||||
| IO_FIELD (R_MMU_KBASE_LO, base_4, 4), $r0
|
||||
move.d $r0, [R_MMU_KBASE_LO]
|
||||
|
||||
; mmu enable, segs e,c,b,a,6,5,4,0 segment mapped
|
||||
move.d IO_STATE (R_MMU_CONFIG, mmu_enable, enable) \
|
||||
move.d IO_STATE (R_MMU_CONFIG, mmu_enable, enable) \
|
||||
| IO_STATE (R_MMU_CONFIG, inv_excp, enable) \
|
||||
| IO_STATE (R_MMU_CONFIG, acc_excp, enable) \
|
||||
| IO_STATE (R_MMU_CONFIG, we_excp, enable) \
|
||||
@ -93,17 +91,17 @@
|
||||
move.d $r0, [R_MMU_CONFIG]
|
||||
#else
|
||||
; kseg mappings
|
||||
move.d IO_FIELD (R_MMU_KBASE_HI, base_e, 8) \
|
||||
move.d IO_FIELD (R_MMU_KBASE_HI, base_e, 8) \
|
||||
| IO_FIELD (R_MMU_KBASE_HI, base_c, 4) \
|
||||
| IO_FIELD (R_MMU_KBASE_HI, base_b, 0xb), $r0
|
||||
move.d $r0, [R_MMU_KBASE_HI]
|
||||
|
||||
; temporary map of 0x40->0x40 and 0x00->0x00
|
||||
; temporary map of 0x40->0x40 and 0x00->0x00
|
||||
move.d IO_FIELD (R_MMU_KBASE_LO, base_4, 4), $r0
|
||||
move.d $r0, [R_MMU_KBASE_LO]
|
||||
|
||||
; mmu enable, segs f,e,c,b,4,0 segment mapped
|
||||
move.d IO_STATE (R_MMU_CONFIG, mmu_enable, enable) \
|
||||
move.d IO_STATE (R_MMU_CONFIG, mmu_enable, enable) \
|
||||
| IO_STATE (R_MMU_CONFIG, inv_excp, enable) \
|
||||
| IO_STATE (R_MMU_CONFIG, acc_excp, enable) \
|
||||
| IO_STATE (R_MMU_CONFIG, we_excp, enable) \
|
||||
@ -141,12 +139,12 @@
|
||||
;;
|
||||
;; In both cases, we start in un-cached mode, and need to jump into a
|
||||
;; cached PC after we're done fiddling around with the segments.
|
||||
;;
|
||||
;;
|
||||
;; arch/etrax100/etrax100.ld sets some symbols that define the start
|
||||
;; and end of each segment.
|
||||
|
||||
;; Check if we start from DRAM or FLASH by testing PC
|
||||
|
||||
|
||||
move.d $pc,$r0
|
||||
and.d 0x7fffffff,$r0 ; get rid of the non-cache bit
|
||||
cmp.d 0x10000,$r0 ; arbitrary... just something above this code
|
||||
@ -163,7 +161,7 @@ _inflash0:
|
||||
;; after init.
|
||||
.section ".init.text", "ax"
|
||||
_inflash:
|
||||
#ifdef CONFIG_ETRAX_ETHERNET
|
||||
#ifdef CONFIG_ETRAX_ETHERNET
|
||||
;; Start MII clock to make sure it is running when tranceiver is reset
|
||||
move.d START_ETHERNET_CLOCK, $r0
|
||||
move.d $r0, [R_NETWORK_GEN_CONFIG]
|
||||
@ -183,10 +181,10 @@ _inflash:
|
||||
cmp.d RAM_INIT_MAGIC, $r8 ; Already initialized?
|
||||
beq _dram_init_finished
|
||||
nop
|
||||
|
||||
|
||||
#include "../lib/dram_init.S"
|
||||
|
||||
_dram_init_finished:
|
||||
_dram_init_finished:
|
||||
;; Copy text+data to DRAM
|
||||
;; This is fragile - the calculation of r4 as the image size depends
|
||||
;; on that the labels below actually are the first and last positions
|
||||
@ -198,7 +196,7 @@ _dram_init_finished:
|
||||
;; between the physical start of the flash and the flash-image start,
|
||||
;; and when run with compression, the kernel is actually unpacked to
|
||||
;; DRAM and we never get here in the first place :))
|
||||
|
||||
|
||||
moveq 0, $r0 ; source
|
||||
move.d text_start, $r1 ; destination
|
||||
move.d __vmlinux_end, $r2 ; end destination
|
||||
@ -229,10 +227,10 @@ _dram_init_finished:
|
||||
add.d 0xf0000000, $r4 ; add flash start in virtual memory (cached)
|
||||
#endif
|
||||
move.d $r4, [romfs_start]
|
||||
1:
|
||||
1:
|
||||
moveq 1, $r0
|
||||
move.d $r0, [romfs_in_flash]
|
||||
|
||||
|
||||
jump _start_it ; enter code, cached this time
|
||||
|
||||
_inram:
|
||||
@ -241,7 +239,7 @@ _inram:
|
||||
|
||||
moveq 0, $r0
|
||||
move.d $r0, [romfs_length] ; default if there is no cramfs
|
||||
|
||||
|
||||
;; The kernel could have been unpacked to DRAM by the loader, but
|
||||
;; the cramfs image could still be in the Flash directly after the
|
||||
;; compressed kernel image. The loader passes the address of the
|
||||
@ -251,7 +249,7 @@ _inram:
|
||||
;; (Notice that if this is not booted from the loader, r9 will be
|
||||
;; garbage but we do sanity checks on it, the chance that it points
|
||||
;; to a cramfs magic is small.. )
|
||||
|
||||
|
||||
cmp.d 0x0ffffff8, $r9
|
||||
bhs _no_romfs_in_flash ; r9 points outside the flash area
|
||||
nop
|
||||
@ -274,7 +272,7 @@ _inram:
|
||||
jump _start_it ; enter code, cached this time
|
||||
|
||||
_no_romfs_in_flash:
|
||||
|
||||
|
||||
;; Check if there is a cramfs (magic value).
|
||||
;; Notice that we check for cramfs magic value - which is
|
||||
;; the "rom fs" we'll possibly use in 2.4 if not JFFS (which does
|
||||
@ -286,8 +284,8 @@ _no_romfs_in_flash:
|
||||
bne 2f
|
||||
nop
|
||||
|
||||
;; Ok. What is its size ?
|
||||
|
||||
;; Ok. What is its size ?
|
||||
|
||||
move.d [$r0 + 4], $r2 ; cramfs_super.size (again, no need to swapwb)
|
||||
|
||||
;; We want to copy it to the end of the BSS
|
||||
@ -303,7 +301,7 @@ _no_romfs_in_flash:
|
||||
|
||||
add.d $r2, $r0
|
||||
add.d $r2, $r1
|
||||
|
||||
|
||||
;; Go ahead. Make my loop.
|
||||
|
||||
lsrq 1, $r2 ; size is in bytes, we copy words
|
||||
@ -314,14 +312,14 @@ _no_romfs_in_flash:
|
||||
bne 1b
|
||||
nop
|
||||
|
||||
2:
|
||||
2:
|
||||
;; Dont worry that the BSS is tainted. It will be cleared later.
|
||||
|
||||
moveq 0, $r0
|
||||
move.d $r0, [romfs_in_flash]
|
||||
|
||||
jump _start_it ; better skip the additional cramfs check below
|
||||
|
||||
|
||||
_start_it:
|
||||
|
||||
;; Check if kernel command line is supplied
|
||||
@ -348,7 +346,7 @@ no_command_line:
|
||||
move.d ibr_start,$r0 ; this symbol is set by the linker script
|
||||
move $r0,$ibr
|
||||
move.d $r0,[etrax_irv] ; set the interrupt base register and pointer
|
||||
|
||||
|
||||
;; Clear BSS region, from _bss_start to _end
|
||||
|
||||
move.d __bss_start, $r0
|
||||
@ -357,7 +355,7 @@ no_command_line:
|
||||
cmp.d $r1, $r0
|
||||
blo 1b
|
||||
nop
|
||||
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_ETRAXIDE
|
||||
;; disable ATA before enabling it in genconfig below
|
||||
moveq 0,$r0
|
||||
@ -380,7 +378,7 @@ no_command_line:
|
||||
|
||||
#ifdef CONFIG_JULIETTE
|
||||
;; configure external DMA channel 0 before enabling it in genconfig
|
||||
|
||||
|
||||
moveq 0,$r0
|
||||
move.d $r0,[R_EXT_DMA_0_ADDR]
|
||||
; cnt enable, word size, output, stop, size 0
|
||||
@ -395,7 +393,7 @@ no_command_line:
|
||||
move.d $r0,[R_EXT_DMA_0_CMD]
|
||||
|
||||
;; reset dma4 and wait for completion
|
||||
|
||||
|
||||
moveq IO_STATE (R_DMA_CH4_CMD, cmd, reset),$r0
|
||||
move.b $r0,[R_DMA_CH4_CMD]
|
||||
1: move.b [R_DMA_CH4_CMD],$r0
|
||||
@ -405,7 +403,7 @@ no_command_line:
|
||||
nop
|
||||
|
||||
;; reset dma5 and wait for completion
|
||||
|
||||
|
||||
moveq IO_STATE (R_DMA_CH5_CMD, cmd, reset),$r0
|
||||
move.b $r0,[R_DMA_CH5_CMD]
|
||||
1: move.b [R_DMA_CH5_CMD],$r0
|
||||
@ -413,8 +411,8 @@ no_command_line:
|
||||
cmp.b IO_STATE (R_DMA_CH5_CMD, cmd, reset),$r0
|
||||
beq 1b
|
||||
nop
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
;; Etrax product HW genconfig setup
|
||||
|
||||
moveq 0,$r0
|
||||
@ -486,7 +484,7 @@ no_command_line:
|
||||
beq 1b
|
||||
nop
|
||||
#endif
|
||||
|
||||
|
||||
moveq IO_STATE (R_DMA_CH8_CMD, cmd, reset),$r0
|
||||
move.b $r0,[R_DMA_CH8_CMD] ; reset (ser1 dma out)
|
||||
move.b $r0,[R_DMA_CH9_CMD] ; reset (ser1 dma in)
|
||||
@ -503,7 +501,7 @@ no_command_line:
|
||||
|
||||
;; setup port PA and PB default initial directions and data
|
||||
;; including their shadow registers
|
||||
|
||||
|
||||
move.b CONFIG_ETRAX_DEF_R_PORT_PA_DIR,$r0
|
||||
#if defined(CONFIG_BLUETOOTH) && defined(CONFIG_BLUETOOTH_RESET_PA7)
|
||||
or.b IO_STATE (R_PORT_PA_DIR, dir7, output),$r0
|
||||
@ -520,7 +518,7 @@ no_command_line:
|
||||
#endif
|
||||
move.b $r0,[port_pa_data_shadow]
|
||||
move.b $r0,[R_PORT_PA_DATA]
|
||||
|
||||
|
||||
move.b CONFIG_ETRAX_DEF_R_PORT_PB_CONFIG,$r0
|
||||
move.b $r0,[port_pb_config_shadow]
|
||||
move.b $r0,[R_PORT_PB_CONFIG]
|
||||
@ -562,13 +560,13 @@ no_command_line:
|
||||
#endif
|
||||
move.d $r0,[port_g_data_shadow]
|
||||
move.d $r0,[R_PORT_G_DATA]
|
||||
|
||||
|
||||
;; setup the serial port 0 at 115200 baud for debug purposes
|
||||
|
||||
|
||||
moveq IO_STATE (R_SERIAL0_XOFF, tx_stop, enable) \
|
||||
| IO_STATE (R_SERIAL0_XOFF, auto_xoff, disable) \
|
||||
| IO_FIELD (R_SERIAL0_XOFF, xoff_char, 0),$r0
|
||||
move.d $r0,[R_SERIAL0_XOFF]
|
||||
move.d $r0,[R_SERIAL0_XOFF]
|
||||
|
||||
; 115.2kbaud for both transmit and receive
|
||||
move.b IO_STATE (R_SERIAL0_BAUD, tr_baud, c115k2Hz) \
|
||||
@ -584,8 +582,8 @@ no_command_line:
|
||||
| IO_STATE (R_SERIAL0_REC_CTRL, rec_par, even) \
|
||||
| IO_STATE (R_SERIAL0_REC_CTRL, rec_par_en, disable) \
|
||||
| IO_STATE (R_SERIAL0_REC_CTRL, rec_bitnr, rec_8bit),$r0
|
||||
move.b $r0,[R_SERIAL0_REC_CTRL]
|
||||
|
||||
move.b $r0,[R_SERIAL0_REC_CTRL]
|
||||
|
||||
; Set up and enable the serial0 transmitter.
|
||||
move.b IO_FIELD (R_SERIAL0_TR_CTRL, txd, 0) \
|
||||
| IO_STATE (R_SERIAL0_TR_CTRL, tr_enable, enable) \
|
||||
@ -598,11 +596,11 @@ no_command_line:
|
||||
move.b $r0,[R_SERIAL0_TR_CTRL]
|
||||
|
||||
;; setup the serial port 1 at 115200 baud for debug purposes
|
||||
|
||||
|
||||
moveq IO_STATE (R_SERIAL1_XOFF, tx_stop, enable) \
|
||||
| IO_STATE (R_SERIAL1_XOFF, auto_xoff, disable) \
|
||||
| IO_FIELD (R_SERIAL1_XOFF, xoff_char, 0),$r0
|
||||
move.d $r0,[R_SERIAL1_XOFF]
|
||||
move.d $r0,[R_SERIAL1_XOFF]
|
||||
|
||||
; 115.2kbaud for both transmit and receive
|
||||
move.b IO_STATE (R_SERIAL1_BAUD, tr_baud, c115k2Hz) \
|
||||
@ -618,8 +616,8 @@ no_command_line:
|
||||
| IO_STATE (R_SERIAL1_REC_CTRL, rec_par, even) \
|
||||
| IO_STATE (R_SERIAL1_REC_CTRL, rec_par_en, disable) \
|
||||
| IO_STATE (R_SERIAL1_REC_CTRL, rec_bitnr, rec_8bit),$r0
|
||||
move.b $r0,[R_SERIAL1_REC_CTRL]
|
||||
|
||||
move.b $r0,[R_SERIAL1_REC_CTRL]
|
||||
|
||||
; Set up and enable the serial1 transmitter.
|
||||
move.b IO_FIELD (R_SERIAL1_TR_CTRL, txd, 0) \
|
||||
| IO_STATE (R_SERIAL1_TR_CTRL, tr_enable, enable) \
|
||||
@ -666,14 +664,14 @@ no_command_line:
|
||||
| IO_STATE (R_SERIAL2_TR_CTRL, tr_bitnr, tr_8bit),$r0
|
||||
move.b $r0,[R_SERIAL2_TR_CTRL]
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ETRAX_SERIAL_PORT3
|
||||
|
||||
#ifdef CONFIG_ETRAX_SERIAL_PORT3
|
||||
;; setup the serial port 3 at 115200 baud for debug purposes
|
||||
|
||||
|
||||
moveq IO_STATE (R_SERIAL3_XOFF, tx_stop, enable) \
|
||||
| IO_STATE (R_SERIAL3_XOFF, auto_xoff, disable) \
|
||||
| IO_FIELD (R_SERIAL3_XOFF, xoff_char, 0),$r0
|
||||
move.d $r0,[R_SERIAL3_XOFF]
|
||||
move.d $r0,[R_SERIAL3_XOFF]
|
||||
|
||||
; 115.2kbaud for both transmit and receive
|
||||
move.b IO_STATE (R_SERIAL3_BAUD, tr_baud, c115k2Hz) \
|
||||
@ -689,8 +687,8 @@ no_command_line:
|
||||
| IO_STATE (R_SERIAL3_REC_CTRL, rec_par, even) \
|
||||
| IO_STATE (R_SERIAL3_REC_CTRL, rec_par_en, disable) \
|
||||
| IO_STATE (R_SERIAL3_REC_CTRL, rec_bitnr, rec_8bit),$r0
|
||||
move.b $r0,[R_SERIAL3_REC_CTRL]
|
||||
|
||||
move.b $r0,[R_SERIAL3_REC_CTRL]
|
||||
|
||||
; Set up and enable the serial3 transmitter.
|
||||
move.b IO_FIELD (R_SERIAL3_TR_CTRL, txd, 0) \
|
||||
| IO_STATE (R_SERIAL3_TR_CTRL, tr_enable, enable) \
|
||||
@ -702,13 +700,13 @@ no_command_line:
|
||||
| IO_STATE (R_SERIAL3_TR_CTRL, tr_bitnr, tr_8bit),$r0
|
||||
move.b $r0,[R_SERIAL3_TR_CTRL]
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* CONFIG_SVINTO_SIM */
|
||||
|
||||
jump start_kernel ; jump into the C-function start_kernel in init/main.c
|
||||
|
||||
|
||||
.data
|
||||
etrax_irv:
|
||||
etrax_irv:
|
||||
.dword 0
|
||||
romfs_start:
|
||||
.dword 0
|
||||
@ -716,13 +714,13 @@ romfs_length:
|
||||
.dword 0
|
||||
romfs_in_flash:
|
||||
.dword 0
|
||||
|
||||
|
||||
;; put some special pages at the beginning of the kernel aligned
|
||||
;; to page boundaries - the kernel cannot start until after this
|
||||
|
||||
#ifdef CONFIG_CRIS_LOW_MAP
|
||||
swapper_pg_dir = 0x60002000
|
||||
#else
|
||||
#else
|
||||
swapper_pg_dir = 0xc0002000
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user