mirror of
https://github.com/Stichting-MINIX-Research-Foundation/u-boot.git
synced 2025-09-09 12:13:00 -04:00
86xx: Rearrange the sequence in start.S
* split the BAT initialization so that only 2 BATs (for the boot page and stack) are programmed very early on. The rest are initialized later. * Move other BAT setup, ccsrbar setup, and law setup later in the code after translation has been enabled. These changes will facilitate the moving of law and BAT initialization to C code, and will aid with 36-bit physical addressing support. Signed-off-by: Becky Bruce <becky.bruce@freescale.com>
This commit is contained in:
parent
33dac03b1b
commit
1a41f7ce9c
@ -235,17 +235,8 @@ in_flash:
|
|||||||
bl enable_ext_addr
|
bl enable_ext_addr
|
||||||
|
|
||||||
/* setup the bats */
|
/* setup the bats */
|
||||||
bl setup_bats
|
bl early_bats
|
||||||
sync
|
|
||||||
|
|
||||||
#if (CFG_CCSRBAR_DEFAULT != CFG_CCSRBAR)
|
|
||||||
/* setup ccsrbar */
|
|
||||||
bl setup_ccsrbar
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* setup the law entries */
|
|
||||||
bl law_entry
|
|
||||||
sync
|
|
||||||
/*
|
/*
|
||||||
* Cache must be enabled here for stack-in-cache trick.
|
* Cache must be enabled here for stack-in-cache trick.
|
||||||
* This means we need to enable the BATS.
|
* This means we need to enable the BATS.
|
||||||
@ -282,6 +273,19 @@ in_flash:
|
|||||||
|
|
||||||
GET_GOT /* initialize GOT access */
|
GET_GOT /* initialize GOT access */
|
||||||
|
|
||||||
|
/* setup the rest of the bats */
|
||||||
|
bl setup_bats
|
||||||
|
bl clear_tlbs
|
||||||
|
sync
|
||||||
|
|
||||||
|
#if (CFG_CCSRBAR_DEFAULT != CFG_CCSRBAR)
|
||||||
|
/* setup ccsrbar */
|
||||||
|
bl setup_ccsrbar
|
||||||
|
#endif
|
||||||
|
|
||||||
|
bl law_entry
|
||||||
|
sync
|
||||||
|
|
||||||
/* run low-level CPU init code (from Flash) */
|
/* run low-level CPU init code (from Flash) */
|
||||||
bl cpu_init_f
|
bl cpu_init_f
|
||||||
sync
|
sync
|
||||||
@ -359,6 +363,7 @@ invalidate_bats:
|
|||||||
|
|
||||||
|
|
||||||
/* setup_bats - set them up to some initial state */
|
/* setup_bats - set them up to some initial state */
|
||||||
|
/* Skip any BATS setup in early_bats */
|
||||||
.globl setup_bats
|
.globl setup_bats
|
||||||
setup_bats:
|
setup_bats:
|
||||||
|
|
||||||
@ -454,42 +459,6 @@ setup_bats:
|
|||||||
mtspr DBAT4U, r3
|
mtspr DBAT4U, r3
|
||||||
isync
|
isync
|
||||||
|
|
||||||
/* IBAT 5 */
|
|
||||||
addis r4, r0, CFG_IBAT5L@h
|
|
||||||
ori r4, r4, CFG_IBAT5L@l
|
|
||||||
addis r3, r0, CFG_IBAT5U@h
|
|
||||||
ori r3, r3, CFG_IBAT5U@l
|
|
||||||
mtspr IBAT5L, r4
|
|
||||||
mtspr IBAT5U, r3
|
|
||||||
isync
|
|
||||||
|
|
||||||
/* DBAT 5 */
|
|
||||||
addis r4, r0, CFG_DBAT5L@h
|
|
||||||
ori r4, r4, CFG_DBAT5L@l
|
|
||||||
addis r3, r0, CFG_DBAT5U@h
|
|
||||||
ori r3, r3, CFG_DBAT5U@l
|
|
||||||
mtspr DBAT5L, r4
|
|
||||||
mtspr DBAT5U, r3
|
|
||||||
isync
|
|
||||||
|
|
||||||
/* IBAT 6 */
|
|
||||||
addis r4, r0, CFG_IBAT6L@h
|
|
||||||
ori r4, r4, CFG_IBAT6L@l
|
|
||||||
addis r3, r0, CFG_IBAT6U@h
|
|
||||||
ori r3, r3, CFG_IBAT6U@l
|
|
||||||
mtspr IBAT6L, r4
|
|
||||||
mtspr IBAT6U, r3
|
|
||||||
isync
|
|
||||||
|
|
||||||
/* DBAT 6 */
|
|
||||||
addis r4, r0, CFG_DBAT6L@h
|
|
||||||
ori r4, r4, CFG_DBAT6L@l
|
|
||||||
addis r3, r0, CFG_DBAT6U@h
|
|
||||||
ori r3, r3, CFG_DBAT6U@l
|
|
||||||
mtspr DBAT6L, r4
|
|
||||||
mtspr DBAT6U, r3
|
|
||||||
isync
|
|
||||||
|
|
||||||
/* IBAT 7 */
|
/* IBAT 7 */
|
||||||
addis r4, r0, CFG_IBAT7L@h
|
addis r4, r0, CFG_IBAT7L@h
|
||||||
ori r4, r4, CFG_IBAT7L@l
|
ori r4, r4, CFG_IBAT7L@l
|
||||||
@ -508,18 +477,65 @@ setup_bats:
|
|||||||
mtspr DBAT7U, r3
|
mtspr DBAT7U, r3
|
||||||
isync
|
isync
|
||||||
|
|
||||||
1:
|
sync
|
||||||
addis r3, 0, 0x0000
|
blr
|
||||||
addis r5, 0, 0x4 /* upper bound of 0x00040000 for 7400/750 */
|
|
||||||
|
/*
|
||||||
|
* early_bats:
|
||||||
|
*
|
||||||
|
* Set up bats needed early on - this is usually the BAT for the
|
||||||
|
* stack-in-cache and the Flash
|
||||||
|
*/
|
||||||
|
.globl early_bats
|
||||||
|
early_bats:
|
||||||
|
/* IBAT 5 */
|
||||||
|
lis r4, CFG_IBAT5L@h
|
||||||
|
ori r4, r4, CFG_IBAT5L@l
|
||||||
|
lis r3, CFG_IBAT5U@h
|
||||||
|
ori r3, r3, CFG_IBAT5U@l
|
||||||
|
mtspr IBAT5L, r4
|
||||||
|
mtspr IBAT5U, r3
|
||||||
isync
|
isync
|
||||||
|
|
||||||
tlblp:
|
/* DBAT 5 */
|
||||||
tlbie r3
|
lis r4, CFG_DBAT5L@h
|
||||||
sync
|
ori r4, r4, CFG_DBAT5L@l
|
||||||
addi r3, r3, 0x1000
|
lis r3, CFG_DBAT5U@h
|
||||||
cmp 0, 0, r3, r5
|
ori r3, r3, CFG_DBAT5U@l
|
||||||
blt tlblp
|
mtspr DBAT5L, r4
|
||||||
|
mtspr DBAT5U, r3
|
||||||
|
isync
|
||||||
|
|
||||||
|
/* IBAT 6 */
|
||||||
|
lis r4, CFG_IBAT6L@h
|
||||||
|
ori r4, r4, CFG_IBAT6L@l
|
||||||
|
lis r3, CFG_IBAT6U@h
|
||||||
|
ori r3, r3, CFG_IBAT6U@l
|
||||||
|
mtspr IBAT6L, r4
|
||||||
|
mtspr IBAT6U, r3
|
||||||
|
isync
|
||||||
|
|
||||||
|
/* DBAT 6 */
|
||||||
|
lis r4, CFG_DBAT6L@h
|
||||||
|
ori r4, r4, CFG_DBAT6L@l
|
||||||
|
lis r3, CFG_DBAT6U@h
|
||||||
|
ori r3, r3, CFG_DBAT6U@l
|
||||||
|
mtspr DBAT6L, r4
|
||||||
|
mtspr DBAT6U, r3
|
||||||
|
isync
|
||||||
|
blr
|
||||||
|
|
||||||
|
.globl clear_tlbs
|
||||||
|
clear_tlbs:
|
||||||
|
addis r3, 0, 0x0000
|
||||||
|
addis r5, 0, 0x4
|
||||||
|
isync
|
||||||
|
tlblp:
|
||||||
|
tlbie r3
|
||||||
|
sync
|
||||||
|
addi r3, r3, 0x1000
|
||||||
|
cmp 0, 0, r3, r5
|
||||||
|
blt tlblp
|
||||||
blr
|
blr
|
||||||
|
|
||||||
.globl enable_addr_trans
|
.globl enable_addr_trans
|
||||||
|
Loading…
x
Reference in New Issue
Block a user