104 lines
1.7 KiB
ArmAsm
104 lines
1.7 KiB
ArmAsm
.file "panic.c"
|
|
.text
|
|
.section .rodata.str1.1,"aMS",@progbits,1
|
|
.LC0:
|
|
.string "(no message given)"
|
|
.LC1:
|
|
.string "double panic!\n"
|
|
.LC2:
|
|
.string "panic! - "
|
|
.text
|
|
.p2align 4,,15
|
|
.globl StartPanic
|
|
.type StartPanic, @function
|
|
StartPanic:
|
|
.LFB3:
|
|
.cfi_startproc
|
|
pushq %r13
|
|
.cfi_def_cfa_offset 16
|
|
.cfi_offset 13, -16
|
|
pushq %r12
|
|
.cfi_def_cfa_offset 24
|
|
.cfi_offset 12, -24
|
|
pushq %rbp
|
|
.cfi_def_cfa_offset 32
|
|
.cfi_offset 6, -32
|
|
pushq %rbx
|
|
.cfi_def_cfa_offset 40
|
|
.cfi_offset 3, -40
|
|
movq %rdi, %rbx
|
|
subq $8, %rsp
|
|
.cfi_def_cfa_offset 48
|
|
/APP
|
|
# 43 "kaleid/kernel/ke/panic.c" 1
|
|
cli
|
|
# 0 "" 2
|
|
/NO_APP
|
|
movabsq $__kstate, %rax
|
|
movabsq $stdout, %rbp
|
|
movabsq $__panicmsg, %r13
|
|
movb $2, (%rax)
|
|
movq 0(%rbp), %rdi
|
|
movabsq $ClearTermUnlocked, %rax
|
|
call *%rax
|
|
testq %rbx, %rbx
|
|
movabsq $.LC0, %rax
|
|
movq 0(%rbp), %rdi
|
|
cmove %rax, %rbx
|
|
cmpq $0, 0(%r13)
|
|
movabsq $PrintOnTermUnlocked, %r12
|
|
je .L3
|
|
movabsq $.LC1, %rsi
|
|
call *%r12
|
|
/APP
|
|
# 55 "kaleid/kernel/ke/panic.c" 1
|
|
hlt
|
|
# 0 "" 2
|
|
/NO_APP
|
|
.L3:
|
|
movabsq $.LC2, %rsi
|
|
movq 0(%rbp), %rdi
|
|
movq %rbx, 0(%r13)
|
|
call *%r12
|
|
movq %rbx, %rsi
|
|
movq 0(%rbp), %rdi
|
|
call *%r12
|
|
.p2align 4,,10
|
|
.p2align 3
|
|
.L4:
|
|
/APP
|
|
# 65 "kaleid/kernel/ke/panic.c" 1
|
|
hlt
|
|
# 0 "" 2
|
|
/NO_APP
|
|
jmp .L4
|
|
.cfi_endproc
|
|
.LFE3:
|
|
.size StartPanic, .-StartPanic
|
|
.p2align 4,,15
|
|
.globl _assert_handler
|
|
.type _assert_handler, @function
|
|
_assert_handler:
|
|
.LFB2:
|
|
.cfi_startproc
|
|
subq $8, %rsp
|
|
.cfi_def_cfa_offset 16
|
|
/APP
|
|
# 30 "kaleid/kernel/ke/panic.c" 1
|
|
cli
|
|
# 0 "" 2
|
|
/NO_APP
|
|
movabsq $StartPanic, %rax
|
|
call *%rax
|
|
.cfi_endproc
|
|
.LFE2:
|
|
.size _assert_handler, .-_assert_handler
|
|
.globl __panicmsg
|
|
.section .bss
|
|
.align 8
|
|
.type __panicmsg, @object
|
|
.size __panicmsg, 8
|
|
__panicmsg:
|
|
.zero 8
|
|
.ident "GCC: (GNU) 7.3.0"
|