diff src/start.s @ 0:53676d1f5817 default tip

firsh commit
author tobaru
date Sun, 04 Feb 2018 17:54:49 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/start.s	Sun Feb 04 17:54:49 2018 +0900
@@ -0,0 +1,1518 @@
+	.text
+	.syntax unified
+	.eabi_attribute	67, "2.09"
+	.cpu	arm1136jf-s
+	.eabi_attribute	6, 6
+	.eabi_attribute	8, 1
+	.eabi_attribute	9, 1
+	.fpu	vfpv2
+	.eabi_attribute	34, 0
+	.eabi_attribute	17, 1
+	.eabi_attribute	20, 1
+	.eabi_attribute	21, 1
+	.eabi_attribute	23, 3
+	.eabi_attribute	24, 1
+	.eabi_attribute	25, 1
+	.eabi_attribute	38, 1
+	.eabi_attribute	18, 4
+	.eabi_attribute	26, 2
+	.eabi_attribute	14, 0
+	.file	"start.c"
+	.file	1 "." "types.h"
+	.file	2 "start.c"
+	.globl	_uart_putc
+	.p2align	2
+	.type	_uart_putc,%function
+	.code	32
+_uart_putc:
+.Lfunc_begin0:
+	.loc	2 10 0
+	.fnstart
+	.cfi_sections .debug_frame
+	.cfi_startproc
+	.pad	#12
+	sub	sp, sp, #12
+	.cfi_def_cfa_offset 12
+	mov	r1, r0
+	str	r0, [sp, #8]
+.Ltmp0:
+	.loc	2 11 22 prologue_end
+	ldr	r0, .LCPI0_0
+	str	r0, [sp, #4]
+	.loc	2 12 14
+	ldr	r0, [sp, #8]
+	.loc	2 12 6 is_stmt 0
+	ldr	r2, [sp, #4]
+	.loc	2 12 12
+	strb	r0, [r2]
+	.loc	2 13 1 is_stmt 1
+	str	r1, [sp]
+	add	sp, sp, #12
+	bx	lr
+.Ltmp1:
+	.p2align	2
+	.loc	2 0 1 is_stmt 0
+.LCPI0_0:
+	.long	270471168
+.Lfunc_end0:
+	.size	_uart_putc, .Lfunc_end0-_uart_putc
+	.cfi_endproc
+	.cantunwind
+	.fnend
+
+	.globl	_puts
+	.p2align	2
+	.type	_puts,%function
+	.code	32
+_puts:
+.Lfunc_begin1:
+	.loc	2 17 0 is_stmt 1
+	.fnstart
+	.cfi_startproc
+	.save	{r11, lr}
+	push	{r11, lr}
+	.cfi_def_cfa_offset 8
+	.cfi_offset 14, -4
+	.cfi_offset 11, -8
+	.setfp	r11, sp
+	mov	r11, sp
+	.cfi_def_cfa_register 11
+	.pad	#8
+	sub	sp, sp, #8
+	mov	r1, r0
+	str	r0, [sp, #4]
+.Ltmp2:
+	.loc	2 18 5 prologue_end
+	str	r1, [sp]
+	b	.LBB1_1
+.LBB1_1:
+	.loc	2 18 13 is_stmt 0
+	ldr	r0, [sp, #4]
+	.loc	2 18 12
+	ldrb	r0, [r0]
+	.loc	2 18 5
+	cmp	r0, #0
+	beq	.LBB1_3
+	b	.LBB1_2
+.LBB1_2:
+.Ltmp3:
+	.loc	2 19 21 is_stmt 1
+	ldr	r0, [sp, #4]
+	.loc	2 19 20 is_stmt 0
+	ldrb	r0, [r0]
+	.loc	2 19 9
+	bl	_uart_putc
+	.loc	2 20 10 is_stmt 1
+	ldr	r0, [sp, #4]
+	add	r0, r0, #1
+	str	r0, [sp, #4]
+.Ltmp4:
+	.loc	2 18 5
+	b	.LBB1_1
+.LBB1_3:
+	.loc	2 22 1
+	mov	sp, r11
+	pop	{r11, pc}
+.Ltmp5:
+.Lfunc_end1:
+	.size	_puts, .Lfunc_end1-_puts
+	.cfi_endproc
+	.cantunwind
+	.fnend
+
+	.globl	_putint
+	.p2align	2
+	.type	_putint,%function
+	.code	32
+_putint:
+.Lfunc_begin2:
+	.loc	2 25 0
+	.fnstart
+	.cfi_startproc
+	.save	{r11, lr}
+	push	{r11, lr}
+	.cfi_def_cfa_offset 8
+	.cfi_offset 14, -4
+	.cfi_offset 11, -8
+	.setfp	r11, sp
+	mov	r11, sp
+	.cfi_def_cfa_register 11
+	.pad	#32
+	sub	sp, sp, #32
+	mov	r3, r2
+	mov	r12, r1
+	mov	lr, r0
+	str	r0, [r11, #-4]
+	str	r1, [r11, #-8]
+	str	r2, [r11, #-12]
+.Ltmp6:
+	.loc	2 26 11 prologue_end
+	ldr	r0, .LCPI2_0
+	str	r0, [sp, #16]
+.Ltmp7:
+	.loc	2 29 9
+	ldr	r0, [r11, #-4]
+.Ltmp8:
+	.loc	2 29 9 is_stmt 0
+	cmp	r0, #0
+	str	r3, [sp, #8]
+	str	r12, [sp, #4]
+	str	lr, [sp]
+	beq	.LBB2_2
+	b	.LBB2_1
+.LBB2_1:
+.Ltmp9:
+	.loc	2 30 15 is_stmt 1
+	ldr	r0, [r11, #-4]
+	.loc	2 30 9 is_stmt 0
+	bl	_puts
+	.loc	2 31 5 is_stmt 1
+	b	.LBB2_2
+.Ltmp10:
+.LBB2_2:
+	.loc	2 33 14
+	mov	r0, #28
+	str	r0, [sp, #12]
+	.loc	2 33 10 is_stmt 0
+	b	.LBB2_3
+.LBB2_3:
+.Ltmp11:
+	.loc	2 33 37
+	ldr	r0, [sp, #12]
+.Ltmp12:
+	.loc	2 33 5
+	cmp	r0, #0
+	blt	.LBB2_6
+	b	.LBB2_4
+.LBB2_4:
+.Ltmp13:
+	.loc	2 34 20 is_stmt 1
+	ldr	r0, [sp, #16]
+	.loc	2 34 25 is_stmt 0
+	ldr	r1, [r11, #-8]
+	.loc	2 34 32
+	ldr	r2, [sp, #12]
+	.loc	2 34 37
+	mov	r3, #15
+	and	r1, r3, r1, lsr r2
+	.loc	2 34 20
+	ldrb	r0, [r0, r1]
+	.loc	2 34 9
+	bl	_uart_putc
+	.loc	2 35 5 is_stmt 1
+	b	.LBB2_5
+.Ltmp14:
+.LBB2_5:
+	.loc	2 33 51
+	ldr	r0, [sp, #12]
+	sub	r0, r0, #4
+	str	r0, [sp, #12]
+	.loc	2 33 5 is_stmt 0
+	b	.LBB2_3
+.Ltmp15:
+.LBB2_6:
+	.loc	2 37 9 is_stmt 1
+	ldr	r0, [r11, #-12]
+.Ltmp16:
+	.loc	2 37 9 is_stmt 0
+	cmp	r0, #0
+	beq	.LBB2_8
+	b	.LBB2_7
+.LBB2_7:
+.Ltmp17:
+	.loc	2 38 15 is_stmt 1
+	ldr	r0, [r11, #-12]
+	.loc	2 38 9 is_stmt 0
+	bl	_puts
+	.loc	2 39 5 is_stmt 1
+	b	.LBB2_8
+.Ltmp18:
+.LBB2_8:
+	.loc	2 40 1
+	mov	sp, r11
+	pop	{r11, pc}
+.Ltmp19:
+	.p2align	2
+	.loc	2 0 1 is_stmt 0
+.LCPI2_0:
+	.long	.L.str
+.Lfunc_end2:
+	.size	_putint, .Lfunc_end2-_putint
+	.cfi_endproc
+	.cantunwind
+	.fnend
+
+	.globl	get_pde
+	.p2align	2
+	.type	get_pde,%function
+	.code	32
+get_pde:
+.Lfunc_begin3:
+	.loc	2 53 0 is_stmt 1
+	.fnstart
+	.cfi_startproc
+	.pad	#8
+	sub	sp, sp, #8
+	.cfi_def_cfa_offset 8
+	mov	r1, r0
+	str	r0, [sp, #4]
+.Ltmp20:
+	.loc	2 54 10 prologue_end
+	ldr	r0, [sp, #4]
+	lsr	r0, r0, #20
+	str	r0, [sp, #4]
+	.loc	2 55 12
+	ldr	r0, .LCPI3_0
+	ldr	r0, [r0]
+	.loc	2 55 25 is_stmt 0
+	ldr	r2, [sp, #4]
+	.loc	2 55 12
+	ldr	r0, [r0, r2, lsl #2]
+	.loc	2 55 5
+	str	r1, [sp]
+	add	sp, sp, #8
+	bx	lr
+.Ltmp21:
+	.p2align	2
+	.loc	2 0 5
+.LCPI3_0:
+	.long	kernel_pgtbl
+.Lfunc_end3:
+	.size	get_pde, .Lfunc_end3-get_pde
+	.cfi_endproc
+	.cantunwind
+	.fnend
+
+	.globl	set_bootpgtbl
+	.p2align	2
+	.type	set_bootpgtbl,%function
+	.code	32
+set_bootpgtbl:
+.Lfunc_begin4:
+	.loc	2 60 0 is_stmt 1
+	.fnstart
+	.cfi_startproc
+	.save	{r4, r5, r11, lr}
+	push	{r4, r5, r11, lr}
+	.cfi_def_cfa_offset 16
+	.cfi_offset 14, -4
+	.cfi_offset 11, -8
+	.cfi_offset 5, -12
+	.cfi_offset 4, -16
+	.setfp	r11, sp, #8
+	add	r11, sp, #8
+	.cfi_def_cfa 11, 8
+	.pad	#40
+	sub	sp, sp, #40
+	mov	r12, r3
+	mov	lr, r2
+	mov	r4, r1
+	mov	r5, r0
+	str	r0, [r11, #-12]
+	str	r1, [r11, #-16]
+	str	r2, [r11, #-20]
+	str	r3, [sp, #24]
+.Ltmp22:
+	.loc	2 65 10 prologue_end
+	ldr	r0, [r11, #-12]
+	lsr	r0, r0, #20
+	str	r0, [r11, #-12]
+	.loc	2 66 10
+	ldr	r0, [r11, #-16]
+	lsr	r0, r0, #20
+	str	r0, [r11, #-16]
+	.loc	2 67 10
+	ldr	r0, [r11, #-20]
+	lsr	r0, r0, #20
+	str	r0, [r11, #-20]
+	mov	r0, #0
+.Ltmp23:
+	.loc	2 69 14
+	str	r0, [sp, #16]
+	.loc	2 69 10 is_stmt 0
+	str	r12, [sp, #12]
+	str	lr, [sp, #8]
+	str	r4, [sp, #4]
+	str	r5, [sp]
+	b	.LBB4_1
+.LBB4_1:
+.Ltmp24:
+	.loc	2 69 19
+	ldr	r0, [sp, #16]
+	.loc	2 69 25
+	ldr	r1, [r11, #-20]
+.Ltmp25:
+	.loc	2 69 5
+	cmp	r0, r1
+	bhs	.LBB4_10
+	b	.LBB4_2
+.LBB4_2:
+.Ltmp26:
+	.loc	2 70 16 is_stmt 1
+	ldr	r0, [r11, #-16]
+	.loc	2 70 20 is_stmt 0
+	lsl	r0, r0, #20
+	.loc	2 70 13
+	str	r0, [sp, #20]
+.Ltmp27:
+	.loc	2 72 14 is_stmt 1
+	ldr	r0, [sp, #24]
+.Ltmp28:
+	.loc	2 72 13 is_stmt 0
+	cmp	r0, #0
+	bne	.LBB4_4
+	b	.LBB4_3
+.LBB4_3:
+.Ltmp29:
+	.loc	2 74 17 is_stmt 1
+	ldr	r0, [sp, #20]
+	mov	r1, #14
+	orr	r1, r1, #1024
+	orr	r0, r0, r1
+	str	r0, [sp, #20]
+	.loc	2 75 9
+	b	.LBB4_5
+.Ltmp30:
+.LBB4_4:
+	.loc	2 77 17
+	ldr	r0, [sp, #20]
+	mov	r1, #2
+	orr	r1, r1, #1024
+	orr	r0, r0, r1
+	str	r0, [sp, #20]
+	b	.LBB4_5
+.Ltmp31:
+.LBB4_5:
+	.loc	2 81 13
+	ldr	r0, [r11, #-12]
+.Ltmp32:
+	.loc	2 81 13 is_stmt 0
+	cmp	r0, #255
+	bhi	.LBB4_7
+	b	.LBB4_6
+.LBB4_6:
+.Ltmp33:
+	.loc	2 82 32 is_stmt 1
+	ldr	r0, [sp, #20]
+	.loc	2 82 13 is_stmt 0
+	ldr	r1, .LCPI4_1
+	ldr	r1, [r1]
+	.loc	2 82 24
+	ldr	r2, [r11, #-12]
+	.loc	2 82 30
+	str	r0, [r1, r2, lsl #2]
+	.loc	2 83 9 is_stmt 1
+	b	.LBB4_8
+.Ltmp34:
+.LBB4_7:
+	.loc	2 84 34
+	ldr	r0, [sp, #20]
+	.loc	2 84 13 is_stmt 0
+	ldr	r1, .LCPI4_0
+	ldr	r1, [r1]
+	.loc	2 84 26
+	ldr	r2, [r11, #-12]
+	.loc	2 84 32
+	str	r0, [r1, r2, lsl #2]
+	b	.LBB4_8
+.Ltmp35:
+.LBB4_8:
+	.loc	2 87 13 is_stmt 1
+	ldr	r0, [r11, #-12]
+	add	r0, r0, #1
+	str	r0, [r11, #-12]
+	.loc	2 88 12
+	ldr	r0, [r11, #-16]
+	add	r0, r0, #1
+	str	r0, [r11, #-16]
+	.loc	2 89 5
+	b	.LBB4_9
+.Ltmp36:
+.LBB4_9:
+	.loc	2 69 33
+	ldr	r0, [sp, #16]
+	add	r0, r0, #1
+	str	r0, [sp, #16]
+	.loc	2 69 5 is_stmt 0
+	b	.LBB4_1
+.Ltmp37:
+.LBB4_10:
+	.loc	2 90 1 is_stmt 1
+	sub	sp, r11, #8
+	pop	{r4, r5, r11, pc}
+.Ltmp38:
+	.p2align	2
+	.loc	2 0 1 is_stmt 0
+.LCPI4_0:
+	.long	kernel_pgtbl
+.LCPI4_1:
+	.long	user_pgtbl
+.Lfunc_end4:
+	.size	set_bootpgtbl, .Lfunc_end4-set_bootpgtbl
+	.cfi_endproc
+	.cantunwind
+	.fnend
+
+	.globl	load_pgtlb
+	.p2align	2
+	.type	load_pgtlb,%function
+	.code	32
+load_pgtlb:
+.Lfunc_begin5:
+	.loc	2 105 0 is_stmt 1
+	.fnstart
+	.cfi_startproc
+	.save	{r11, lr}
+	push	{r11, lr}
+	.cfi_def_cfa_offset 8
+	.cfi_offset 14, -4
+	.cfi_offset 11, -8
+	.setfp	r11, sp
+	mov	r11, sp
+	.cfi_def_cfa_register 11
+	.pad	#32
+	sub	sp, sp, #32
+	mov	r2, r1
+	mov	r3, r0
+	str	r0, [r11, #-4]
+	str	r1, [r11, #-8]
+.Ltmp39:
+	.loc	2 111 5 prologue_end
+	@APP
+	MRC p15, 0, r0, c0, c0, 0
+	.code	32
+	@NO_APP
+	str	r0, [r11, #-12]
+.Ltmp40:
+	.loc	2 113 9
+	ldrb	r0, [r11, #-9]
+.Ltmp41:
+	.loc	2 113 9 is_stmt 0
+	cmp	r0, #65
+	str	r2, [sp, #8]
+	str	r3, [sp, #4]
+	bne	.LBB5_2
+	b	.LBB5_1
+.LBB5_1:
+.Ltmp42:
+	.loc	2 115 5 is_stmt 1
+	b	.LBB5_2
+.Ltmp43:
+.LBB5_2:
+	.loc	2 117 13
+	ldrh	r0, [r11, #-10]
+	.loc	2 117 24 is_stmt 0
+	and	r0, r0, #15
+	.loc	2 117 10
+	strb	r0, [r11, #-13]
+.Ltmp44:
+	.loc	2 119 10 is_stmt 1
+	ldrb	r0, [r11, #-13]
+	.loc	2 119 21 is_stmt 0
+	cmp	r0, #7
+	beq	.LBB5_5
+	b	.LBB5_3
+.LBB5_3:
+	.loc	2 119 25
+	ldrb	r0, [r11, #-13]
+.Ltmp45:
+	.loc	2 119 9
+	cmp	r0, #15
+	beq	.LBB5_5
+	b	.LBB5_4
+.LBB5_4:
+.Ltmp46:
+	.loc	2 120 9 is_stmt 1
+	ldr	r0, .LCPI5_0
+	bl	_puts
+	.loc	2 121 5
+	b	.LBB5_5
+.Ltmp47:
+.LBB5_5:
+	.loc	2 126 9
+	ldr	r0, .LCPI5_1
+	str	r0, [sp, #12]
+	.loc	2 127 49
+	ldr	r0, [sp, #12]
+	.loc	2 127 5 is_stmt 0
+	@APP
+	MCR p15, 0, r0, c3, c0, 0
+	.code	32
+	@NO_APP
+	.loc	2 131 9 is_stmt 1
+	mov	r0, #4
+	str	r0, [sp, #12]
+	.loc	2 132 49
+	ldr	r0, [sp, #12]
+	.loc	2 132 5 is_stmt 0
+	@APP
+	MCR p15, 0, r0, c2, c0, 2
+	.code	32
+	@NO_APP
+	.loc	2 135 17 is_stmt 1
+	ldr	r0, .LCPI5_2
+	ldr	r0, [r0]
+	.loc	2 135 9 is_stmt 0
+	str	r0, [sp, #12]
+	.loc	2 136 49 is_stmt 1
+	ldr	r0, [sp, #12]
+	.loc	2 136 5 is_stmt 0
+	@APP
+	MCR p15, 0, r0, c2, c0, 1
+	.code	32
+	@NO_APP
+	.loc	2 139 17 is_stmt 1
+	ldr	r0, [r11, #-8]
+	.loc	2 139 9 is_stmt 0
+	str	r0, [sp, #12]
+	.loc	2 140 49 is_stmt 1
+	ldr	r0, [sp, #12]
+	.loc	2 140 5 is_stmt 0
+	@APP
+	MCR p15, 0, r0, c2, c0, 0
+	.code	32
+	@NO_APP
+	.loc	2 143 5 is_stmt 1
+	@APP
+	MRC p15, 0, r0, c1, c0, 0
+	.code	32
+	@NO_APP
+	str	r0, [sp, #12]
+	.loc	2 145 9
+	ldr	r0, [sp, #12]
+	ldr	r1, .LCPI5_3
+	orr	r0, r0, r1
+	str	r0, [sp, #12]
+	.loc	2 147 49
+	ldr	r0, [sp, #12]
+	.loc	2 147 5 is_stmt 0
+	@APP
+	MCR p15, 0, r0, c1, c0, 0
+	.code	32
+	@NO_APP
+	.loc	2 149 5 is_stmt 1
+	bl	_flush_all
+	.loc	2 150 1
+	mov	sp, r11
+	pop	{r11, pc}
+.Ltmp48:
+	.p2align	2
+	.loc	2 0 1 is_stmt 0
+.LCPI5_0:
+	.long	.L.str.1
+.LCPI5_1:
+	.long	1431655765
+.LCPI5_2:
+	.long	kernel_pgtbl
+.LCPI5_3:
+	.long	8400909
+.Lfunc_end5:
+	.size	load_pgtlb, .Lfunc_end5-load_pgtlb
+	.cfi_endproc
+	.cantunwind
+	.fnend
+
+	.p2align	2
+	.type	_flush_all,%function
+	.code	32
+_flush_all:
+.Lfunc_begin6:
+	.loc	2 93 0 is_stmt 1
+	.fnstart
+	.cfi_startproc
+	.pad	#4
+	sub	sp, sp, #4
+	.cfi_def_cfa_offset 4
+	mov	r0, #0
+.Ltmp49:
+	.loc	2 94 10 prologue_end
+	str	r0, [sp]
+	.loc	2 97 50
+	ldr	r0, [sp]
+	.loc	2 97 5 is_stmt 0
+	@APP
+	MCR p15, 0, r0, c8, c7, 0
+	.code	32
+	@NO_APP
+	.loc	2 102 1 is_stmt 1
+	add	sp, sp, #4
+	bx	lr
+.Ltmp50:
+.Lfunc_end6:
+	.size	_flush_all, .Lfunc_end6-_flush_all
+	.cfi_endproc
+	.cantunwind
+	.fnend
+
+	.globl	clear_bss
+	.p2align	2
+	.type	clear_bss,%function
+	.code	32
+clear_bss:
+.Lfunc_begin7:
+	.loc	2 162 0
+	.fnstart
+	.cfi_startproc
+	.save	{r11, lr}
+	push	{r11, lr}
+	.cfi_def_cfa_offset 8
+	.cfi_offset 14, -4
+	.cfi_offset 11, -8
+	.setfp	r11, sp
+	mov	r11, sp
+	.cfi_def_cfa_register 11
+	.pad	#8
+	sub	sp, sp, #8
+.Ltmp51:
+	.loc	2 163 5 prologue_end
+	ldr	r0, .LCPI7_0
+	ldr	r1, .LCPI7_1
+	sub	r2, r1, r0
+	mov	r1, #0
+	bl	memset
+	.loc	2 164 1
+	str	r0, [sp, #4]
+	mov	sp, r11
+	pop	{r11, pc}
+.Ltmp52:
+	.p2align	2
+	.loc	2 0 1 is_stmt 0
+.LCPI7_0:
+	.long	edata
+.LCPI7_1:
+	.long	end
+.Lfunc_end7:
+	.size	clear_bss, .Lfunc_end7-clear_bss
+	.cfi_endproc
+	.cantunwind
+	.fnend
+
+	.globl	start
+	.p2align	2
+	.type	start,%function
+	.code	32
+start:
+.Lfunc_begin8:
+	.loc	2 167 0 is_stmt 1
+	.fnstart
+	.cfi_startproc
+	.save	{r11, lr}
+	push	{r11, lr}
+	.cfi_def_cfa_offset 8
+	.cfi_offset 14, -4
+	.cfi_offset 11, -8
+	.setfp	r11, sp
+	mov	r11, sp
+	.cfi_def_cfa_register 11
+	.pad	#16
+	sub	sp, sp, #16
+.Ltmp53:
+	.loc	2 169 5 prologue_end
+	ldr	r0, .LCPI8_0
+	bl	_puts
+	.loc	2 173 5
+	mov	r0, #1048576
+	mov	lr, #0
+	str	r0, [sp, #8]
+	mov	r0, lr
+	mov	r1, lr
+	ldr	r2, [sp, #8]
+	mov	r3, lr
+	str	lr, [sp, #4]
+	bl	set_bootpgtbl
+	.loc	2 174 5
+	mov	r0, #-2147483648
+	ldr	r1, [sp, #4]
+	ldr	r2, [sp, #8]
+	ldr	r3, [sp, #4]
+	bl	set_bootpgtbl
+	.loc	2 177 12
+	mov	r0, #983040
+	orr	r0, r0, #-2147483648
+	str	r0, [r11, #-4]
+.Ltmp54:
+	.loc	2 179 9
+	ldr	r0, [r11, #-4]
+	.loc	2 179 16 is_stmt 0
+	ldr	r1, .LCPI8_1
+.Ltmp55:
+	.loc	2 179 9
+	cmp	r0, r1
+	bhi	.LBB8_2
+	b	.LBB8_1
+.LBB8_1:
+.Ltmp56:
+	.loc	2 180 9 is_stmt 1
+	ldr	r0, .LCPI8_2
+	bl	cprintf
+	.loc	2 181 5
+	b	.LBB8_2
+.Ltmp57:
+.LBB8_2:
+	.loc	2 183 5
+	mov	r0, #16711680
+	orr	r0, r0, #-16777216
+	mov	r2, #1048576
+	mov	r1, #0
+	str	r1, [sp]
+	ldr	r3, [sp]
+	bl	set_bootpgtbl
+	.loc	2 184 5
+	mov	r0, #-1879048192
+	mov	r1, #268435456
+	mov	r2, #134217728
+	mov	r3, #1
+	bl	set_bootpgtbl
+	.loc	2 186 17
+	ldr	r0, .LCPI8_3
+	ldr	r0, [r0]
+	.loc	2 186 31 is_stmt 0
+	ldr	r1, .LCPI8_4
+	ldr	r1, [r1]
+	.loc	2 186 5
+	bl	load_pgtlb
+	.loc	2 187 5 is_stmt 1
+	bl	jump_stack
+	.loc	2 190 5
+	bl	clear_bss
+	.loc	2 192 5
+	bl	kmain
+	.loc	2 193 1
+	mov	sp, r11
+	pop	{r11, pc}
+.Ltmp58:
+	.p2align	2
+	.loc	2 0 1 is_stmt 0
+.LCPI8_0:
+	.long	.L.str.2
+.LCPI8_1:
+	.long	end
+.LCPI8_2:
+	.long	.L.str.3
+.LCPI8_3:
+	.long	kernel_pgtbl
+.LCPI8_4:
+	.long	user_pgtbl
+.Lfunc_end8:
+	.size	start, .Lfunc_end8-start
+	.cfi_endproc
+	.cantunwind
+	.fnend
+
+	.type	.L.str,%object
+	.section	.rodata.str1.1,"aMS",%progbits,1
+.L.str:
+	.asciz	"0123456789ABCDEF"
+	.size	.L.str, 17
+
+	.type	kernel_pgtbl,%object
+	.data
+	.globl	kernel_pgtbl
+	.p2align	2
+kernel_pgtbl:
+	.long	_kernel_pgtbl
+	.size	kernel_pgtbl, 4
+
+	.type	user_pgtbl,%object
+	.globl	user_pgtbl
+	.p2align	2
+user_pgtbl:
+	.long	_user_pgtbl
+	.size	user_pgtbl, 4
+
+	.type	.L.str.1,%object
+	.section	.rodata.str1.1,"aMS",%progbits,1
+.L.str.1:
+	.asciz	"need AARM v6 or higher\n"
+	.size	.L.str.1, 24
+
+	.type	.L.str.2,%object
+.L.str.2:
+	.asciz	"starting xv6 for ARM...\n"
+	.size	.L.str.2, 25
+
+	.type	.L.str.3,%object
+.L.str.3:
+	.asciz	"error: vector table overlaps kernel\n"
+	.size	.L.str.3, 37
+
+	.section	.debug_str,"MS",%progbits,1
+.Linfo_string0:
+	.asciz	"clang version 6.0.0 "
+.Linfo_string1:
+	.asciz	"start.c"
+.Linfo_string2:
+	.asciz	"/mnt/dalmore-home/one/src/xv6-rpi/src"
+.Linfo_string3:
+	.asciz	"kernel_pgtbl"
+.Linfo_string4:
+	.asciz	"unsigned int"
+.Linfo_string5:
+	.asciz	"uint32"
+.Linfo_string6:
+	.asciz	"user_pgtbl"
+.Linfo_string7:
+	.asciz	"unsigned char"
+.Linfo_string8:
+	.asciz	"uint8"
+.Linfo_string9:
+	.asciz	"uint"
+.Linfo_string10:
+	.asciz	"_uart_putc"
+.Linfo_string11:
+	.asciz	"_puts"
+.Linfo_string12:
+	.asciz	"_putint"
+.Linfo_string13:
+	.asciz	"get_pde"
+.Linfo_string14:
+	.asciz	"set_bootpgtbl"
+.Linfo_string15:
+	.asciz	"load_pgtlb"
+.Linfo_string16:
+	.asciz	"_flush_all"
+.Linfo_string17:
+	.asciz	"clear_bss"
+.Linfo_string18:
+	.asciz	"start"
+.Linfo_string19:
+	.asciz	"c"
+.Linfo_string20:
+	.asciz	"int"
+.Linfo_string21:
+	.asciz	"uart0"
+.Linfo_string22:
+	.asciz	"s"
+.Linfo_string23:
+	.asciz	"char"
+.Linfo_string24:
+	.asciz	"prefix"
+.Linfo_string25:
+	.asciz	"val"
+.Linfo_string26:
+	.asciz	"suffix"
+.Linfo_string27:
+	.asciz	"arr"
+.Linfo_string28:
+	.asciz	"idx"
+.Linfo_string29:
+	.asciz	"virt"
+.Linfo_string30:
+	.asciz	"phy"
+.Linfo_string31:
+	.asciz	"len"
+.Linfo_string32:
+	.asciz	"dev_mem"
+.Linfo_string33:
+	.asciz	"pde"
+.Linfo_string34:
+	.asciz	"kern_pgtbl"
+.Linfo_string35:
+	.asciz	"ret"
+.Linfo_string36:
+	.asciz	"arch"
+.Linfo_string37:
+	.asciz	"vectbl"
+	.section	.debug_abbrev,"",%progbits
+	.byte	1
+	.byte	17
+	.byte	1
+	.byte	37
+	.byte	14
+	.byte	19
+	.byte	5
+	.byte	3
+	.byte	14
+	.byte	16
+	.byte	23
+	.byte	27
+	.byte	14
+	.ascii	"\264B"
+	.byte	25
+	.byte	17
+	.byte	1
+	.byte	18
+	.byte	6
+	.byte	0
+	.byte	0
+	.byte	2
+	.byte	52
+	.byte	0
+	.byte	3
+	.byte	14
+	.byte	73
+	.byte	19
+	.byte	63
+	.byte	25
+	.byte	58
+	.byte	11
+	.byte	59
+	.byte	11
+	.byte	2
+	.byte	24
+	.byte	0
+	.byte	0
+	.byte	3
+	.byte	15
+	.byte	0
+	.byte	73
+	.byte	19
+	.byte	0
+	.byte	0
+	.byte	4
+	.byte	22
+	.byte	0
+	.byte	73
+	.byte	19
+	.byte	3
+	.byte	14
+	.byte	58
+	.byte	11
+	.byte	59
+	.byte	11
+	.byte	0
+	.byte	0
+	.byte	5
+	.byte	36
+	.byte	0
+	.byte	3
+	.byte	14
+	.byte	62
+	.byte	11
+	.byte	11
+	.byte	11
+	.byte	0
+	.byte	0
+	.byte	6
+	.byte	46
+	.byte	1
+	.byte	17
+	.byte	1
+	.byte	18
+	.byte	6
+	.byte	64
+	.byte	24
+	.byte	3
+	.byte	14
+	.byte	58
+	.byte	11
+	.byte	59
+	.byte	11
+	.byte	39
+	.byte	25
+	.byte	63
+	.byte	25
+	.byte	0
+	.byte	0
+	.byte	7
+	.byte	5
+	.byte	0
+	.byte	2
+	.byte	24
+	.byte	3
+	.byte	14
+	.byte	58
+	.byte	11
+	.byte	59
+	.byte	11
+	.byte	73
+	.byte	19
+	.byte	0
+	.byte	0
+	.byte	8
+	.byte	52
+	.byte	0
+	.byte	2
+	.byte	24
+	.byte	3
+	.byte	14
+	.byte	58
+	.byte	11
+	.byte	59
+	.byte	11
+	.byte	73
+	.byte	19
+	.byte	0
+	.byte	0
+	.byte	9
+	.byte	46
+	.byte	1
+	.byte	17
+	.byte	1
+	.byte	18
+	.byte	6
+	.byte	64
+	.byte	24
+	.byte	3
+	.byte	14
+	.byte	58
+	.byte	11
+	.byte	59
+	.byte	11
+	.byte	39
+	.byte	25
+	.byte	73
+	.byte	19
+	.byte	63
+	.byte	25
+	.byte	0
+	.byte	0
+	.byte	10
+	.byte	46
+	.byte	1
+	.byte	17
+	.byte	1
+	.byte	18
+	.byte	6
+	.byte	64
+	.byte	24
+	.byte	3
+	.byte	14
+	.byte	58
+	.byte	11
+	.byte	59
+	.byte	11
+	.byte	39
+	.byte	25
+	.byte	0
+	.byte	0
+	.byte	11
+	.byte	46
+	.byte	0
+	.byte	17
+	.byte	1
+	.byte	18
+	.byte	6
+	.byte	64
+	.byte	24
+	.byte	3
+	.byte	14
+	.byte	58
+	.byte	11
+	.byte	59
+	.byte	11
+	.byte	39
+	.byte	25
+	.byte	63
+	.byte	25
+	.byte	0
+	.byte	0
+	.byte	12
+	.byte	53
+	.byte	0
+	.byte	73
+	.byte	19
+	.byte	0
+	.byte	0
+	.byte	0
+	.section	.debug_info,"",%progbits
+.Lcu_begin0:
+	.long	628
+	.short	4
+	.long	.debug_abbrev
+	.byte	4
+	.byte	1
+	.long	.Linfo_string0
+	.short	12
+	.long	.Linfo_string1
+	.long	.Lline_table_start0
+	.long	.Linfo_string2
+
+	.long	.Lfunc_begin0
+	.long	.Lfunc_end8-.Lfunc_begin0
+	.byte	2
+	.long	.Linfo_string3
+	.long	55
+
+	.byte	2
+	.byte	47
+	.byte	5
+	.byte	3
+	.long	kernel_pgtbl
+	.byte	3
+	.long	60
+	.byte	4
+	.long	71
+	.long	.Linfo_string5
+	.byte	1
+	.byte	4
+	.byte	5
+	.long	.Linfo_string4
+	.byte	7
+	.byte	4
+	.byte	2
+	.long	.Linfo_string6
+	.long	55
+
+	.byte	2
+	.byte	48
+	.byte	5
+	.byte	3
+	.long	user_pgtbl
+	.byte	3
+	.long	100
+	.byte	4
+	.long	111
+	.long	.Linfo_string8
+	.byte	1
+	.byte	6
+	.byte	5
+	.long	.Linfo_string7
+	.byte	8
+	.byte	1
+	.byte	4
+	.long	71
+	.long	.Linfo_string9
+	.byte	1
+	.byte	1
+	.byte	6
+	.long	.Lfunc_begin0
+	.long	.Lfunc_end0-.Lfunc_begin0
+	.byte	1
+	.byte	91
+	.long	.Linfo_string10
+	.byte	2
+	.byte	9
+
+
+	.byte	7
+	.byte	2
+	.byte	125
+	.byte	8
+	.long	.Linfo_string19
+	.byte	2
+	.byte	9
+	.long	602
+	.byte	8
+	.byte	2
+	.byte	125
+	.byte	4
+	.long	.Linfo_string21
+	.byte	2
+	.byte	11
+	.long	609
+	.byte	0
+	.byte	6
+	.long	.Lfunc_begin1
+	.long	.Lfunc_end1-.Lfunc_begin1
+	.byte	1
+	.byte	91
+	.long	.Linfo_string11
+	.byte	2
+	.byte	16
+
+
+	.byte	7
+	.byte	2
+	.byte	125
+	.byte	4
+	.long	.Linfo_string22
+	.byte	2
+	.byte	16
+	.long	619
+	.byte	0
+	.byte	6
+	.long	.Lfunc_begin2
+	.long	.Lfunc_end2-.Lfunc_begin2
+	.byte	1
+	.byte	91
+	.long	.Linfo_string12
+	.byte	2
+	.byte	24
+
+
+	.byte	7
+	.byte	2
+	.byte	145
+	.byte	124
+	.long	.Linfo_string24
+	.byte	2
+	.byte	24
+	.long	619
+	.byte	7
+	.byte	2
+	.byte	145
+	.byte	120
+	.long	.Linfo_string25
+	.byte	2
+	.byte	24
+	.long	118
+	.byte	7
+	.byte	2
+	.byte	145
+	.byte	116
+	.long	.Linfo_string26
+	.byte	2
+	.byte	24
+	.long	619
+	.byte	8
+	.byte	2
+	.byte	125
+	.byte	16
+	.long	.Linfo_string27
+	.byte	2
+	.byte	26
+	.long	619
+	.byte	8
+	.byte	2
+	.byte	125
+	.byte	12
+	.long	.Linfo_string28
+	.byte	2
+	.byte	27
+	.long	602
+	.byte	0
+	.byte	9
+	.long	.Lfunc_begin3
+	.long	.Lfunc_end3-.Lfunc_begin3
+	.byte	1
+	.byte	91
+	.long	.Linfo_string13
+	.byte	2
+	.byte	52
+
+	.long	60
+
+	.byte	7
+	.byte	2
+	.byte	125
+	.byte	4
+	.long	.Linfo_string29
+	.byte	2
+	.byte	52
+	.long	60
+	.byte	0
+	.byte	6
+	.long	.Lfunc_begin4
+	.long	.Lfunc_end4-.Lfunc_begin4
+	.byte	1
+	.byte	91
+	.long	.Linfo_string14
+	.byte	2
+	.byte	59
+
+
+	.byte	7
+	.byte	2
+	.byte	145
+	.byte	116
+	.long	.Linfo_string29
+	.byte	2
+	.byte	59
+	.long	60
+	.byte	7
+	.byte	2
+	.byte	145
+	.byte	112
+	.long	.Linfo_string30
+	.byte	2
+	.byte	59
+	.long	60
+	.byte	7
+	.byte	2
+	.byte	145
+	.byte	108
+	.long	.Linfo_string31
+	.byte	2
+	.byte	59
+	.long	118
+	.byte	7
+	.byte	2
+	.byte	125
+	.byte	24
+	.long	.Linfo_string32
+	.byte	2
+	.byte	59
+	.long	602
+	.byte	8
+	.byte	2
+	.byte	125
+	.byte	20
+	.long	.Linfo_string33
+	.byte	2
+	.byte	61
+	.long	60
+	.byte	8
+	.byte	2
+	.byte	125
+	.byte	16
+	.long	.Linfo_string28
+	.byte	2
+	.byte	62
+	.long	602
+	.byte	0
+	.byte	6
+	.long	.Lfunc_begin5
+	.long	.Lfunc_end5-.Lfunc_begin5
+	.byte	1
+	.byte	91
+	.long	.Linfo_string15
+	.byte	2
+	.byte	104
+
+
+	.byte	7
+	.byte	2
+	.byte	145
+	.byte	124
+	.long	.Linfo_string34
+	.byte	2
+	.byte	104
+	.long	55
+	.byte	7
+	.byte	2
+	.byte	145
+	.byte	120
+	.long	.Linfo_string6
+	.byte	2
+	.byte	104
+	.long	55
+	.byte	8
+	.byte	2
+	.byte	145
+	.byte	116
+	.long	.Linfo_string35
+	.byte	2
+	.byte	106
+	.long	118
+	.byte	8
+	.byte	2
+	.byte	145
+	.byte	115
+	.long	.Linfo_string36
+	.byte	2
+	.byte	107
+	.long	624
+	.byte	8
+	.byte	2
+	.byte	125
+	.byte	12
+	.long	.Linfo_string25
+	.byte	2
+	.byte	108
+	.long	118
+	.byte	0
+	.byte	10
+	.long	.Lfunc_begin6
+	.long	.Lfunc_end6-.Lfunc_begin6
+	.byte	1
+	.byte	91
+	.long	.Linfo_string16
+	.byte	2
+	.byte	92
+
+	.byte	8
+	.byte	2
+	.byte	125
+	.byte	0
+	.long	.Linfo_string25
+	.byte	2
+	.byte	94
+	.long	118
+	.byte	0
+	.byte	11
+	.long	.Lfunc_begin7
+	.long	.Lfunc_end7-.Lfunc_begin7
+	.byte	1
+	.byte	91
+	.long	.Linfo_string17
+	.byte	2
+	.byte	161
+
+
+	.byte	6
+	.long	.Lfunc_begin8
+	.long	.Lfunc_end8-.Lfunc_begin8
+	.byte	1
+	.byte	91
+	.long	.Linfo_string18
+	.byte	2
+	.byte	166
+
+
+	.byte	8
+	.byte	2
+	.byte	145
+	.byte	124
+	.long	.Linfo_string37
+	.byte	2
+	.byte	168
+	.long	60
+	.byte	0
+	.byte	5
+	.long	.Linfo_string20
+	.byte	5
+	.byte	4
+	.byte	3
+	.long	614
+	.byte	12
+	.long	100
+	.byte	3
+	.long	624
+	.byte	5
+	.long	.Linfo_string23
+	.byte	8
+	.byte	1
+	.byte	0
+	.section	.debug_ranges,"",%progbits
+	.section	.debug_macinfo,"",%progbits
+.Lcu_macro_begin0:
+	.byte	0
+	.section	.debug_pubnames,"",%progbits
+	.long	.LpubNames_end0-.LpubNames_begin0
+.LpubNames_begin0:
+	.short	2
+	.long	.Lcu_begin0
+	.long	632
+	.long	570
+	.asciz	"start"
+	.long	433
+	.asciz	"load_pgtlb"
+	.long	207
+	.asciz	"_putint"
+	.long	129
+	.asciz	"_uart_putc"
+	.long	78
+	.asciz	"user_pgtbl"
+	.long	295
+	.asciz	"get_pde"
+	.long	38
+	.asciz	"kernel_pgtbl"
+	.long	521
+	.asciz	"_flush_all"
+	.long	175
+	.asciz	"_puts"
+	.long	331
+	.asciz	"set_bootpgtbl"
+	.long	553
+	.asciz	"clear_bss"
+	.long	0
+.LpubNames_end0:
+	.section	.debug_pubtypes,"",%progbits
+	.long	.LpubTypes_end0-.LpubTypes_begin0
+.LpubTypes_begin0:
+	.short	2
+	.long	.Lcu_begin0
+	.long	632
+	.long	118
+	.asciz	"uint"
+	.long	60
+	.asciz	"uint32"
+	.long	71
+	.asciz	"unsigned int"
+	.long	100
+	.asciz	"uint8"
+	.long	111
+	.asciz	"unsigned char"
+	.long	602
+	.asciz	"int"
+	.long	624
+	.asciz	"char"
+	.long	0
+.LpubTypes_end0:
+
+	.ident	"clang version 6.0.0 "
+	.section	".note.GNU-stack","",%progbits
+	.eabi_attribute	30, 6
+	.section	.debug_line,"",%progbits
+.Lline_table_start0: