From 25a49d467aca396db3ca456153b68fe8466ce0b7 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 57a91032b4c2..66bf6c036f1e 100644 --- a/arch/arm64/kernel/head.S +++ b/arch/arm64/kernel/head.S @@ -44,6 +44,26 @@ #error TEXT_OFFSET must be less than 2MB #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. * --------------------------- @@ -106,6 +126,105 @@ pe_header: * current RELR displacement */ SYM_CODE_START(stext) +#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 el2_setup // Drop to EL1, w0=cpu_boot_mode adrp x23, __PHYS_OFFSET @@ -392,6 +511,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 the idmap and swapper page -- cgit