csky: Support dynamic start physical address
Before this patch csky-linux need CONFIG_RAM_BASE to determine start physical address. Now we use phys_offset variable to replace the macro of PHYS_OFFSET and we setup phys_offset with real physical address which is determined during startup in head.S. With this patch we needn't re-compile kernel for different start physical address. ie: 0x0 / 0xc0000000 start physical address could use the same vmlinux, be care different start address must be 512MB aligned. Signed-off-by: Guo Ren <ren_guo@c-sky.com> Cc: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
@@ -163,9 +163,29 @@
|
||||
.endm
|
||||
|
||||
.macro SETUP_MMU rx
|
||||
lrw \rx, PHYS_OFFSET | 0xe
|
||||
/* Check MMU on | off */
|
||||
mfcr \rx, cr18
|
||||
btsti \rx, 0
|
||||
bt 1f
|
||||
grs \rx, 1f
|
||||
br 2f
|
||||
1:
|
||||
/*
|
||||
* cr<30, 15> format:
|
||||
* 31 - 29 | 28 - 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
|
||||
* BA Reserved SH WA B SO SEC C D V
|
||||
*/
|
||||
mfcr \rx, cr<30, 15>
|
||||
2:
|
||||
lsri \rx, 28
|
||||
lsli \rx, 28
|
||||
addi \rx, 0x1ce
|
||||
mtcr \rx, cr<30, 15>
|
||||
lrw \rx, (PHYS_OFFSET + 0x20000000) | 0xe
|
||||
|
||||
lsri \rx, 28
|
||||
addi \rx, 2
|
||||
lsli \rx, 28
|
||||
addi \rx, 0x1ce
|
||||
mtcr \rx, cr<31, 15>
|
||||
.endm
|
||||
|
||||
|
Reference in New Issue
Block a user