grub/grub-core/tests/boot/pc-chainloader.S
Vladimir 'phcoder' Serbinenko e8ea4b8424 pc-chainloader bootcheck
2010-08-25 21:55:48 +02:00

63 lines
No EOL
699 B
ArmAsm

#define SHUTDOWN_PORT 0x8900
.text
.globl _start
_start:
base:
.code16
jmp cont
portmsg:
xorw %ax, %ax
1:
movb 0(%si), %al
test %ax, %ax
jz 1f
outb %al, %dx
incw %si
jmp 1b
1:
ret
serialmsg:
1:
movb 0(%si), %bl
testb %bl, %bl
jz 1f
movw $0x3fd, %dx
2:
inb %dx, %al
testb $0x20, %al
jz 2b
movw $0x3f8, %dx
movb %bl, %al
outb %al, %dx
incw %si
jmp 1b
1:
ret
cont:
xorw %ax, %ax
movw %ax, %ds
lea message, %si
call serialmsg
lea shutdown, %si
movw $SHUTDOWN_PORT, %dx
call portmsg
1:
hlt
jmp 1b
shutdown:
.ascii "Shutdown"
.byte 0
message:
.ascii "Boot Test Passed Successfully\n" SUCCESSFUL_BOOT_STRING "\n"
.byte 0
. = base + 510
.short 0xaa55