Skip to content
Snippets Groups Projects
Commit b843f311 authored by Graeme Russ's avatar Graeme Russ
Browse files

CHECKPATCH: arch/x86/lib/*

parent 58c7a675
No related branches found
No related tags found
No related merge requests found
...@@ -246,11 +246,9 @@ rm_int1f: ...@@ -246,11 +246,9 @@ rm_int1f:
rm_def_int: rm_def_int:
iret iret
/* /*
* All interrupt jumptable entries jump to here * All interrupt jumptable entries jump to here after pushing the
* after pushing the interrupt vector number onto the * interrupt vector number onto the stack.
* stack.
*/ */
any_interrupt16: any_interrupt16:
MAKE_BIOS_STACK MAKE_BIOS_STACK
...@@ -272,7 +270,8 @@ gs movw OFFS_VECTOR(%bp), %ax ...@@ -272,7 +270,8 @@ gs movw OFFS_VECTOR(%bp), %ax
je Lint_1ah je Lint_1ah
movw $0xffff, %ax movw $0xffff, %ax
jmp Lout jmp Lout
Lint_10h: /* VGA BIOS services */ Lint_10h:
/* VGA BIOS services */
call bios_10h call bios_10h
jmp Lout jmp Lout
Lint_11h: Lint_11h:
...@@ -281,35 +280,42 @@ Lint_11h: ...@@ -281,35 +280,42 @@ Lint_11h:
Lint_12h: Lint_12h:
call bios_12h call bios_12h
jmp Lout jmp Lout
Lint_13h: /* BIOS disk services */ Lint_13h:
/* BIOS disk services */
call bios_13h call bios_13h
jmp Lout jmp Lout
Lint_15h: /* Misc. BIOS services */ Lint_15h:
/* Misc. BIOS services */
call bios_15h call bios_15h
jmp Lout jmp Lout
Lint_16h: /* keyboard services */ Lint_16h:
/* keyboard services */
call bios_16h call bios_16h
jmp Lout jmp Lout
Lint_1ah: /* PCI bios */ Lint_1ah:
/* PCI bios */
call bios_1ah call bios_1ah
jmp Lout jmp Lout
Lout: Lout:
cmpw $0, %ax cmpw $0, %ax
je Lhandeled je Lhandeled
/* Insert code for unhandeled INTs here. /*
* Insert code for unhandeled INTs here.
* *
* ROLO prints a message to the console * ROLO prints a message to the console we could do that but then
* (we could do that but then we're in 16bit mode * we're in 16bit mode so we'll have to get back into 32bit mode
* so we'll have to get back into 32bit mode * to use the console I/O routines (if we do this we should make
* to use the console I/O routines (if we do this * int 0x10 and int 0x16 work as well)
* we shuls make int 0x10 and int 0x16 work as well))
*/ */
Lhandeled: Lhandeled:
RESTORE_CALLERS_STACK RESTORE_CALLERS_STACK
addw $2,%sp /* dump vector number */
iret /* return from interrupt */
/* dump vector number */
addw $2,%sp
/* return from interrupt */
iret
/* /*
************************************************************ ************************************************************
...@@ -327,22 +333,24 @@ gs movw OFFS_AX(%bp), %ax ...@@ -327,22 +333,24 @@ gs movw OFFS_AX(%bp), %ax
je Lvid_cfg je Lvid_cfg
movw $0xffff, %ax movw $0xffff, %ax
ret ret
Lcur_pos: /* Read Cursor Position and Size */ Lcur_pos:
/* Read Cursor Position and Size */
gs movw $0, OFFS_CX(%bp) gs movw $0, OFFS_CX(%bp)
gs movw $0, OFFS_DX(%bp) gs movw $0, OFFS_DX(%bp)
xorw %ax, %ax xorw %ax, %ax
ret ret
Lvid_state: /* Get Video State */ Lvid_state:
gs movw $(80 << 8|0x03), OFFS_AX(%bp) /* 80 columns, 80x25, 16 colors */ /* Get Video State - 80 columns, 80x25, 16 colors */
gs movw $(80 << 8|0x03), OFFS_AX(%bp)
gs movw $0, OFFS_BX(%bp) gs movw $0, OFFS_BX(%bp)
xorw %ax, %ax xorw %ax, %ax
ret ret
Lvid_cfg: /* Video Subsystem Configuration (EGA/VGA) */ Lvid_cfg:
gs movw $0x10, OFFS_BX(%bp) /* indicate CGA/MDA/HGA */ /* Video Subsystem Configuration (EGA/VGA) - indicate CGA/MDA/HGA */
gs movw $0x10, OFFS_BX(%bp)
xorw %ax, %ax xorw %ax, %ax
ret ret
/* /*
************************************************************ ************************************************************
* BIOS interrupt 11h -- Equipment determination * BIOS interrupt 11h -- Equipment determination
...@@ -355,7 +363,6 @@ gs movw %ax, OFFS_AX(%bp) ...@@ -355,7 +363,6 @@ gs movw %ax, OFFS_AX(%bp)
xorw %ax, %ax xorw %ax, %ax
ret ret
/* /*
************************************************************ ************************************************************
* BIOS interrupt 12h -- Get Memory Size * BIOS interrupt 12h -- Get Memory Size
...@@ -370,16 +377,18 @@ cs movw ram_in_64kb_chunks, %ax ...@@ -370,16 +377,18 @@ cs movw ram_in_64kb_chunks, %ax
b12_more_than_640k: b12_more_than_640k:
movw $0x280, %ax movw $0x280, %ax
b12_return: b12_return:
gs movw %ax, OFFS_AX(%bp) /* return number of kilobytes in ax */ /* return number of kilobytes in ax */
gs movw %ax, OFFS_AX(%bp)
gs movw OFFS_FLAGS(%bp), %ax gs movw OFFS_FLAGS(%bp), %ax
andw $0xfffe, %ax /* clear carry -- function succeeded */
/* clear carry -- function succeeded */
andw $0xfffe, %ax
gs movw %ax, OFFS_FLAGS(%bp) gs movw %ax, OFFS_FLAGS(%bp)
xorw %ax, %ax xorw %ax, %ax
ret ret
/* /*
************************************************************ ************************************************************
* BIOS interrupt 13h -- Disk services * BIOS interrupt 13h -- Disk services
...@@ -394,12 +403,13 @@ gs movw OFFS_AX(%bp), %ax ...@@ -394,12 +403,13 @@ gs movw OFFS_AX(%bp), %ax
ret ret
Lfunc_15h: Lfunc_15h:
gs movw OFFS_AX(%bp), %ax gs movw OFFS_AX(%bp), %ax
andw $0xff, %ax /* return AH=0->drive not present */
/* return AH=0->drive not present */
andw $0x00ff, %ax
gs movw %ax, OFFS_AX(%bp) gs movw %ax, OFFS_AX(%bp)
xorw %ax, %ax xorw %ax, %ax
ret ret
/* /*
*********************************************************** ***********************************************************
* BIOS interrupt 15h -- Miscellaneous services * BIOS interrupt 15h -- Miscellaneous services
...@@ -417,9 +427,12 @@ gs movw OFFS_AX(%bp), %ax ...@@ -417,9 +427,12 @@ gs movw OFFS_AX(%bp), %ax
movw $0xffff, %ax movw $0xffff, %ax
ret ret
Lfunc_c0h: /* Return System Configuration Parameters (PS2 only) */ Lfunc_c0h:
/* Return System Configuration Parameters (PS2 only) */
gs movw OFFS_FLAGS(%bp), %ax gs movw OFFS_FLAGS(%bp), %ax
orw $1, %ax /* return carry -- function not supported */
/* return carry -- function not supported */
orw $1, %ax
gs movw %ax, OFFS_FLAGS(%bp) gs movw %ax, OFFS_FLAGS(%bp)
xorw %ax, %ax xorw %ax, %ax
ret ret
...@@ -430,38 +443,56 @@ gs movw OFFS_AX(%bp), %ax ...@@ -430,38 +443,56 @@ gs movw OFFS_AX(%bp), %ax
cmpw $1, %ax cmpw $1, %ax
je Lfunc_e801h je Lfunc_e801h
gs movw OFFS_FLAGS(%bp), %ax gs movw OFFS_FLAGS(%bp), %ax
orw $1, %ax /* return carry -- function not supported */
/* return carry -- function not supported */
orw $1, %ax
gs movw %ax, OFFS_FLAGS(%bp) gs movw %ax, OFFS_FLAGS(%bp)
xorw %ax, %ax xorw %ax, %ax
ret ret
Lfunc_e801h: /* Get memory size for >64M Configurations */ Lfunc_e801h:
/* Get memory size for >64M Configurations */
cs movw ram_in_64kb_chunks, %ax cs movw ram_in_64kb_chunks, %ax
cmpw $0x100, %ax cmpw $0x100, %ax
ja e801_more_than_16mb ja e801_more_than_16mb
shlw $6, %ax /* multiply by 64 */
subw $0x400, %ax /* 1st meg does not count */
gs movw %ax, OFFS_AX(%bp) /* return memory size between 1M and 16M in 1kb chunks in AX and CX */ /* multiply by 64 */
shlw $6, %ax
/* 1st meg does not count */
subw $0x400, %ax
/* return memory size between 1M and 16M in 1kb chunks in AX and CX */
gs movw %ax, OFFS_AX(%bp)
gs movw %ax, OFFS_CX(%bp) gs movw %ax, OFFS_CX(%bp)
gs movw $0, OFFS_BX(%bp) /* set BX and DX to 0*/
/* set BX and DX to 0*/
gs movw $0, OFFS_BX(%bp)
gs movw $0, OFFS_DX(%bp) gs movw $0, OFFS_DX(%bp)
gs movw OFFS_FLAGS(%bp), %ax gs movw OFFS_FLAGS(%bp), %ax
andw $0xfffe, %ax /* clear carry -- function succeeded */
/* clear carry -- function succeeded */
andw $0xfffe, %ax
gs movw %ax, OFFS_FLAGS(%bp) gs movw %ax, OFFS_FLAGS(%bp)
xorw %ax, %ax xorw %ax, %ax
ret ret
e801_more_than_16mb: e801_more_than_16mb:
subw $0x100, %ax /* subtract 16MB */ /* subtract 16MB */
subw $0x100, %ax
gs movw $0x3c00, OFFS_AX(%bp) /* return 0x3c00 (16MB-1MB) in AX and CX */ /* return 0x3c00 (16MB-1MB) in AX and CX */
gs movw $0x3c00, OFFS_AX(%bp)
gs movw $0x3c00, OFFS_CX(%bp) gs movw $0x3c00, OFFS_CX(%bp)
gs movw %ax, OFFS_BX(%bp) /* set BX and DX to number of 64kb chunks above 16MB */
/* set BX and DX to number of 64kb chunks above 16MB */
gs movw %ax, OFFS_BX(%bp)
gs movw %ax, OFFS_DX(%bp) gs movw %ax, OFFS_DX(%bp)
gs movw OFFS_FLAGS(%bp), %ax gs movw OFFS_FLAGS(%bp), %ax
andw $0xfffe, %ax /* clear carry -- function succeeded */
/* clear carry -- function succeeded */
andw $0xfffe, %ax
gs movw %ax, OFFS_FLAGS(%bp) gs movw %ax, OFFS_FLAGS(%bp)
xorw %ax, %ax xorw %ax, %ax
ret ret
...@@ -473,18 +504,22 @@ cs movw ram_in_64kb_chunks, %ax ...@@ -473,18 +504,22 @@ cs movw ram_in_64kb_chunks, %ax
movw $0x100, %ax movw $0x100, %ax
b88_not_more_than16: b88_not_more_than16:
shlw $6, %ax shlw $6, %ax
subw $0x400, %ax /* 1st meg does not count */
gs movw %ax, OFFS_AX(%bp) /* return number of kilobytes between 16MB and 16MB in ax */ /* 1st meg does not count */
subw $0x400, %ax
/* return number of kilobytes between 16MB and 16MB in ax */
gs movw %ax, OFFS_AX(%bp)
gs movw OFFS_FLAGS(%bp), %ax gs movw OFFS_FLAGS(%bp), %ax
andw $0xfffe, %ax /* clear carry -- function succeeded */
/* clear carry -- function succeeded */
andw $0xfffe, %ax
gs movw %ax, OFFS_FLAGS(%bp) gs movw %ax, OFFS_FLAGS(%bp)
xorw %ax, %ax xorw %ax, %ax
ret ret
/* /*
************************************************************ ************************************************************
* BIOS interrupt 16h -- keyboard services * BIOS interrupt 16h -- keyboard services
...@@ -498,7 +533,8 @@ gs movw OFFS_AX(%bp), %ax ...@@ -498,7 +533,8 @@ gs movw OFFS_AX(%bp), %ax
movw $0xffff, %ax movw $0xffff, %ax
ret ret
Lfunc_03h: Lfunc_03h:
xorw %ax, %ax /* do nothing -- function not supported */ /* do nothing -- function not supported */
xorw %ax, %ax
ret ret
/* /*
...@@ -514,7 +550,9 @@ gs movw OFFS_AX(%bp), %ax ...@@ -514,7 +550,9 @@ gs movw OFFS_AX(%bp), %ax
ret ret
Lfunc_b1h: Lfunc_b1h:
call realmode_pci_bios call realmode_pci_bios
xorw %ax, %ax /* do nothing -- function not supported */
/* do nothing -- function not supported */
xorw %ax, %ax
ret ret
......
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
.section .realmode, "ax" .section .realmode, "ax"
.code16 .code16
/* 16bit protected mode code here */ /* 16bit protected mode code here */
.globl realmode_enter .globl realmode_enter
realmode_enter: realmode_enter:
...@@ -69,12 +70,16 @@ o32 pushf ...@@ -69,12 +70,16 @@ o32 pushf
movw %ax, %gs movw %ax, %gs
lidt realmode_idt_ptr lidt realmode_idt_ptr
movl %cr0, %eax /* Go back into real mode by */ /* Go back into real mode by clearing PE to 0 */
andl $0x7ffffffe, %eax /* clearing PE to 0 */ movl %cr0, %eax
andl $0x7ffffffe, %eax
movl %eax, %cr0 movl %eax, %cr0
ljmp $0x0,$do_realmode /* switch to real mode */
do_realmode: /* realmode code from here */ /* switch to real mode */
ljmp $0x0,$do_realmode
do_realmode:
/* realmode code from here */
movw %cs,%ax movw %cs,%ax
movw %ax,%ds movw %ax,%ds
movw %ax,%es movw %ax,%es
...@@ -82,7 +87,6 @@ do_realmode: /* realmode code from here */ ...@@ -82,7 +87,6 @@ do_realmode: /* realmode code from here */
movw %ax,%gs movw %ax,%gs
/* create a temporary stack */ /* create a temporary stack */
movw $0xc0, %ax movw $0xc0, %ax
movw %ax, %ss movw %ax, %ss
movw $0x200, %ax movw $0x200, %ax
...@@ -114,14 +118,16 @@ o32 popf ...@@ -114,14 +118,16 @@ o32 popf
popw %ss popw %ss
movl %eax, %esp movl %eax, %esp
cs movl temp_eax, %eax cs movl temp_eax, %eax
wbinvd /* self-modifying code,
* better flush the cache */ /* self-modifying code, better flush the cache */
wbinvd
.byte 0x9a /* lcall */ .byte 0x9a /* lcall */
temp_ip: temp_ip:
.word 0 /* new ip */ .word 0 /* new ip */
temp_cs: temp_cs:
.word 0 /* new cs */ .word 0 /* new cs */
realmode_ret: realmode_ret:
/* save eax, esp and ss */ /* save eax, esp and ss */
cs movl %eax, saved_eax cs movl %eax, saved_eax
...@@ -130,10 +136,11 @@ cs movl %eax, saved_esp ...@@ -130,10 +136,11 @@ cs movl %eax, saved_esp
movw %ss, %ax movw %ss, %ax
cs movw %ax, saved_ss cs movw %ax, saved_ss
/* restore the stack, note that we set sp to 0x244; /*
* restore the stack, note that we set sp to 0x244;
* pt_regs is 0x44 bytes long and we push the structure * pt_regs is 0x44 bytes long and we push the structure
* backwards on to the stack, bottom first */ * backwards on to the stack, bottom first
*/
movw $0xc0, %ax movw $0xc0, %ax
movw %ax, %ss movw %ax, %ss
movw $0x244, %ax movw $0x244, %ax
...@@ -169,12 +176,15 @@ cs movw temp_ip, %ax ...@@ -169,12 +176,15 @@ cs movw temp_ip, %ax
pushl %ebx pushl %ebx
o32 cs lidt saved_idt o32 cs lidt saved_idt
o32 cs lgdt saved_gdt /* Set GDTR */ o32 cs lgdt saved_gdt
movl %cr0, %eax /* Go back into protected mode */ /* Go back into protected mode reset PE to 1 */
orl $1,%eax /* reset PE to 1 */ movl %cr0, %eax
orl $1,%eax
movl %eax, %cr0 movl %eax, %cr0
jmp next_line /* flush prefetch queue */
/* flush prefetch queue */
jmp next_line
next_line: next_line:
movw $return_ptr, %ax movw $return_ptr, %ax
movw %ax,%bp movw %ax,%bp
...@@ -182,12 +192,13 @@ o32 cs ljmp *(%bp) ...@@ -182,12 +192,13 @@ o32 cs ljmp *(%bp)
.code32 .code32
protected_mode: protected_mode:
movl $0x18,%eax /* reload GDT[3] */ /* Reload segment registers */
movw %ax,%fs /* reset FS */ movl $0x18, %eax
movw %ax,%ds /* reset DS */ movw %ax, %fs
movw %ax,%gs /* reset GS */ movw %ax, %ds
movw %ax,%es /* reset ES */ movw %ax, %gs
movw %ax,%ss /* reset SS */ movw %ax, %es
movw %ax, %ss
movl saved_protected_mode_esp, %eax movl saved_protected_mode_esp, %eax
movl %eax, %esp movl %eax, %esp
popf popf
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment