both ack and gcc can compile klib16.S
This commit is contained in:
parent
905e94f058
commit
58654acf08
@ -32,8 +32,10 @@ SRCS+= arch_do_vmctl.c \
|
|||||||
arch_watchdog.c \
|
arch_watchdog.c \
|
||||||
pre_init.c
|
pre_init.c
|
||||||
|
|
||||||
|
.if ${COMPILER_TYPE} == "ack"
|
||||||
I86CPPFLAGS = -mi86
|
I86CPPFLAGS = -mi86
|
||||||
I86LDFLAGS = -mi86
|
I86LDFLAGS = -mi86
|
||||||
|
|
||||||
CPPFLAGS.klib16.S = ${I86CPPFLAGS}
|
CPPFLAGS.klib16.S = ${I86CPPFLAGS}
|
||||||
LDFLAGS.klib16.S = ${I86LDFLAGS}
|
LDFLAGS.klib16.S = ${I86LDFLAGS}
|
||||||
|
.endif
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
.globl _poweroff16_end
|
.globl _poweroff16_end
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
.code16
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
/* poweroff16 */
|
/* poweroff16 */
|
||||||
@ -27,7 +28,7 @@
|
|||||||
_poweroff16:
|
_poweroff16:
|
||||||
/* Assume eax is already set to required value of cr0*/
|
/* Assume eax is already set to required value of cr0*/
|
||||||
.byte 0x0F,0x22,0xC0 /* mov %cr0,%eax */
|
.byte 0x0F,0x22,0xC0 /* mov %cr0,%eax */
|
||||||
jmpf $0,$(BIOS_POWEROFF_ENTRY + real_mode - _poweroff16)
|
ljmp $0,$(BIOS_POWEROFF_ENTRY + real_mode - _poweroff16)
|
||||||
real_mode:
|
real_mode:
|
||||||
mov $((BIOS_POWEROFF_ENTRY >> 4) + 0x200),%ax
|
mov $((BIOS_POWEROFF_ENTRY >> 4) + 0x200),%ax
|
||||||
mov %ax, %ds
|
mov %ax, %ds
|
||||||
@ -40,34 +41,34 @@ real_mode:
|
|||||||
gate_A20:
|
gate_A20:
|
||||||
call kb_wait
|
call kb_wait
|
||||||
movb $0xD1,%al
|
movb $0xD1,%al
|
||||||
outb 0x64
|
outb $0x64
|
||||||
call kb_wait
|
call kb_wait
|
||||||
movb $0xDD,%al
|
movb $0xDD,%al
|
||||||
orb %ah,%al
|
orb %ah,%al
|
||||||
outb 0x60
|
outb $0x60
|
||||||
call kb_wait
|
call kb_wait
|
||||||
movb $0xFF,%al
|
movb $0xFF,%al
|
||||||
outb 0x64
|
outb $0x64
|
||||||
call kb_wait
|
call kb_wait
|
||||||
|
|
||||||
/* Connect to APM */
|
/* Connect to APM */
|
||||||
mov $0x5301,%ax
|
mov $0x5301,%ax
|
||||||
mov $0x0,%bx
|
mov $0x0,%bx
|
||||||
int 0x15
|
int $0x15
|
||||||
jc apm_err
|
jc apm_err
|
||||||
|
|
||||||
/* Enable power management */
|
/* Enable power management */
|
||||||
mov $0x5308,%ax
|
mov $0x5308,%ax
|
||||||
mov $0x1,%bx
|
mov $0x1,%bx
|
||||||
mov $0x1,%cx
|
mov $0x1,%cx
|
||||||
int 0x15
|
int $0x15
|
||||||
jc apm_err
|
jc apm_err
|
||||||
|
|
||||||
/* Set power state to off */
|
/* Set power state to off */
|
||||||
mov $0x5307,%ax
|
mov $0x5307,%ax
|
||||||
mov $0x01,%bx
|
mov $0x01,%bx
|
||||||
mov $0x3,%cx
|
mov $0x3,%cx
|
||||||
int 0x15
|
int $0x15
|
||||||
jc apm_err
|
jc apm_err
|
||||||
0: hlt
|
0: hlt
|
||||||
jmp 0b
|
jmp 0b
|
||||||
@ -93,7 +94,7 @@ apm_err:
|
|||||||
jmp 0b
|
jmp 0b
|
||||||
|
|
||||||
kb_wait:
|
kb_wait:
|
||||||
inb 0x64
|
inb $0x64
|
||||||
testb $0x02,%al
|
testb $0x02,%al
|
||||||
jnz kb_wait
|
jnz kb_wait
|
||||||
ret
|
ret
|
||||||
|
Loading…
x
Reference in New Issue
Block a user