Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
e7672be5
Commit
e7672be5
authored
Jan 09, 2014
by
Jesper Nilsson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleanup whitespace, remove old author tag
Signed-off-by:
Jesper Nilsson
<
jesper.nilsson@axis.com
>
parent
bb1d2a94
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
61 additions
and
63 deletions
+61
-63
arch/cris/arch-v10/kernel/head.S
arch/cris/arch-v10/kernel/head.S
+61
-63
No files found.
arch/cris/arch-v10/kernel/head.S
View file @
e7672be5
/*
*
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
2
f
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
1
b
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
1
b
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
1
b
nop
#endif
#endif
;; Etrax product HW genconfig setup
moveq
0
,
$r0
...
...
@@ -486,7 +484,7 @@ no_command_line:
beq
1
b
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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment