aboutsummaryrefslogtreecommitdiff
path: root/arch/csky/abiv1/inc/abi/entry.h
diff options
context:
space:
mode:
authorGravatar Guo Ren <ren_guo@c-sky.com> 2019-04-08 11:12:25 +0800
committerGravatar Guo Ren <ren_guo@c-sky.com> 2019-04-22 13:44:57 +0800
commitf62e31623d718a7c20d9da98de48361624d7360a (patch)
tree686ee8d9ea793443c6ad184f36074c2e391c535c /arch/csky/abiv1/inc/abi/entry.h
parentcsky: Reconstruct signal processing (diff)
downloadlinux-f62e31623d718a7c20d9da98de48361624d7360a.tar.gz
linux-f62e31623d718a7c20d9da98de48361624d7360a.tar.bz2
linux-f62e31623d718a7c20d9da98de48361624d7360a.zip
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>
Diffstat (limited to 'arch/csky/abiv1/inc/abi/entry.h')
-rw-r--r--arch/csky/abiv1/inc/abi/entry.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/arch/csky/abiv1/inc/abi/entry.h b/arch/csky/abiv1/inc/abi/entry.h
index 4a485b142be1..18e2023bf165 100644
--- a/arch/csky/abiv1/inc/abi/entry.h
+++ b/arch/csky/abiv1/inc/abi/entry.h
@@ -144,9 +144,24 @@
.endm
.macro SETUP_MMU rx
- lrw \rx, PHYS_OFFSET | 0xe
+ /* Select MMU as co-processor */
+ cpseti cp15
+
+ /*
+ * cpcr30 format:
+ * 31 - 29 | 28 - 4 | 3 | 2 | 1 | 0
+ * BA Reserved C D V
+ */
+ cprcr \rx, cpcr30
+ lsri \rx, 28
+ lsli \rx, 28
+ addi \rx, 0xe
cpwcr \rx, cpcr30
- lrw \rx, (PHYS_OFFSET + 0x20000000) | 0xe
+
+ lsri \rx, 28
+ addi \rx, 2
+ lsli \rx, 28
+ addi \rx, 0xe
cpwcr \rx, cpcr31
.endm