From 8e85d215174332102da344ff18b13f77f0f83c96 Mon Sep 17 00:00:00 2001 From: Russell King Date: Sat, 3 Dec 2016 00:46:30 +0000 Subject: arm64: hacks and debugging from initial mcbin bringup Signed-off-by: Russell King --- arch/arm64/kernel/head.S | 127 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S index a0dc987724ed..c78a3d9887ae 100644 --- a/arch/arm64/kernel/head.S +++ b/arch/arm64/kernel/head.S @@ -42,6 +42,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. * --------------------------- @@ -88,6 +108,105 @@ * x24 __primary_switch() .. relocate_kernel() current RELR displacement */ 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 preserve_boot_args bl init_kernel_el // w0=cpu_boot_mode adrp x23, __PHYS_OFFSET @@ -373,6 +492,14 @@ SYM_FUNC_START_LOCAL(__create_page_tables) map_memory x0, x1, x5, x6, x7, x3, x4, x10, x11, x12, x13, x14 +#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 -- cgit