summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@armlinux.org.uk>2016-12-03 00:46:30 +0000
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>2024-04-16 16:52:32 +0100
commit6a31fa06f44b89c0004afaa3682f34d3c5a1d837 (patch)
treec661f8dadafbe39877a74fd079646f7b7b016009 /arch
parent750d60016e8c8cc1c72064992f057558dbdfb7e1 (diff)
arm64: hacks and debugging from initial mcbin bringup
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm64/kernel/head.S127
1 files changed, 127 insertions, 0 deletions
diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
index cab7f91949d8..99f8a8c082d3 100644
--- a/arch/arm64/kernel/head.S
+++ b/arch/arm64/kernel/head.S
@@ -41,6 +41,26 @@
#error PAGE_OFFSET must be at least 2MB aligned
#endif
+ .macro putc_base_pa, base:req
+ mov \base, #0xf0000000
+ add \base, \base, #0x00512000
+ .endm
+ .macro putc_base_va, base:req
+ mov \base, #0xffffff8000000000
+ orr \base, \base, #0x30000000
+ add \base, \base, #0x00512000
+ .endm
+ .macro wait, base:req, val:req
+1: ldrb \val, [\base, #5 * 4]
+ tbz \val, #6, 1b
+ .endm
+ .macro putc, base:req, val:req, ch
+ .ifnb \ch
+ mov \val, \ch
+ .endif
+ strb \val, [\base, #0]
+ .endm
+
/*
* Kernel startup entry point.
* ---------------------------
@@ -87,7 +107,106 @@
* x28 create_idmap() callee preserved temp register
*/
SYM_CODE_START(primary_entry)
+#if 0
+ putc_base_pa x21
+ putc x21, w23, #'x'
+ wait x21, w23
+ putc x21, w23, #'0'
+ wait x21, w23
+ putc x21, w23, #':'
+ mov x19, x0
+ mov x20, #16
+1: wait x21, w23
+ lsr x23, x19, #60
+ and w23, w23, #15
+ cmp w23, #10
+ bcc 2f
+ add w23, w23, #7
+2: add w23, w23, #'0'
+ putc x21, w23
+ lsl x19, x19, #4
+ subs x20, x20, #1
+ bcs 1b
+ wait x21, w23
+ putc x21, w23, #'\r'
+ wait x21, w23
+ putc x21, w23, #'\n'
+ wait x21, w23
+
+ putc x21, w23, #'x'
+ wait x21, w23
+ putc x21, w23, #'1'
+ wait x21, w23
+ putc x21, w23, #':'
+ mov x19, x1
+ mov x20, #16
+1: wait x21, w23
+ lsr x23, x19, #60
+ and w23, w23, #15
+ cmp w23, #10
+ bcc 2f
+ add w23, w23, #7
+2: add w23, w23, #'0'
+ putc x21, w23
+ lsl x19, x19, #4
+ subs x20, x20, #1
+ bcs 1b
+ wait x21, w23
+ putc x21, w23, #'\r'
+ wait x21, w23
+ putc x21, w23, #'\n'
+ wait x21, w23
+
+ putc x21, w23, #'x'
+ wait x21, w23
+ putc x21, w23, #'2'
+ wait x21, w23
+ putc x21, w23, #':'
+ mov x19, x2
+ mov x20, #16
+1: wait x21, w23
+ lsr x23, x19, #60
+ and w23, w23, #15
+ cmp w23, #10
+ bcc 2f
+ add w23, w23, #7
+2: add w23, w23, #'0'
+ putc x21, w23
+ lsl x19, x19, #4
+ subs x20, x20, #1
+ bcs 1b
+ wait x21, w23
+ putc x21, w23, #'\r'
+ wait x21, w23
+ putc x21, w23, #'\n'
+ wait x21, w23
+
+ putc x21, w23, #'x'
+ wait x21, w23
+ putc x21, w23, #'3'
+ wait x21, w23
+ putc x21, w23, #':'
+ mov x19, x3
+ mov x20, #16
+1: wait x21, w23
+ lsr x23, x19, #60
+ and w23, w23, #15
+ cmp w23, #10
+ bcc 2f
+ add w23, w23, #7
+2: add w23, w23, #'0'
+ putc x21, w23
+ lsl x19, x19, #4
+ subs x20, x20, #1
+ bcs 1b
+ wait x21, w23
+ putc x21, w23, #'\r'
+ wait x21, w23
+ putc x21, w23, #'\n'
+ wait x21, w23
+#endif
bl record_mmu_state
+
bl preserve_boot_args
bl create_idmap
@@ -406,6 +525,14 @@ SYM_FUNC_START_LOCAL(create_idmap)
mov x6, #SWAPPER_BLOCK_SHIFT
bl remap_region
+#if 0
+ mov x7, (PMD_ATTRINDX(MT_DEVICE_nGnRnE) | SWAPPER_PMD_FLAGS)
+ mov x3, #0xf0000000
+ mov x4, #0x30000000
+ mov x6, #0x31000000
+ create_block_map x0, x7, x3, x4, x6
+#endif
+
/*
* Since the page tables have been populated with non-cacheable
* accesses (MMU disabled), invalidate those tables again to