Preserve %esi and %edi for all BIOS calls. This is probably only necessary

for get_diskinfo(), whose BIOS call sets %es:%edi in some cases, although
most documentation says that it doesn't change %edi in the cases that
happened to matter (for hard disks).

This shall be in 2.1.6 and 2.2.

Submitted by:	Tor.Egge@idt.ntnu.no
		(except I kept the unnecessary preservation of %edx and %ecx)
This commit is contained in:
bde 1996-11-11 14:03:33 +00:00
parent 1a0d3a30c7
commit f2cdccb23f

View File

@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:34:26 rpd
* $Id: bios.S,v 1.4 1994/11/18 05:02:12 phk Exp $
* $Id: bios.S,v 1.5 1995/09/03 05:36:13 julian Exp $
*/
/*
@ -75,6 +75,8 @@ ENTRY(biosread)
mov %esp, %ebp
push %ebx
push %esi
push %edi
push %ecx
push %edx
push %es
@ -112,6 +114,8 @@ ENTRY(biosread)
pop %es
pop %edx
pop %ecx
pop %edi
pop %esi
pop %ebx
pop %ebp
@ -132,6 +136,8 @@ ENTRY(putc)
push %ebp
mov %esp, %ebp
push %ebx
push %esi
push %edi
push %ecx
movb 0x8(%ebp), %cl
@ -150,6 +156,8 @@ ENTRY(putc)
call EXT(real_to_prot)
pop %ecx
pop %edi
pop %esi
pop %ebx
pop %ebp
ret
@ -167,6 +175,8 @@ ENTRY(getc)
push %ebp
mov %esp, %ebp
push %ebx /* save %ebx */
push %esi
push %edi
call EXT(prot_to_real)
@ -183,6 +193,8 @@ ENTRY(getc)
xor %eax, %eax
movb %bl, %al
pop %edi
pop %esi
pop %ebx
pop %ebp
ret
@ -203,6 +215,8 @@ ENTRY(ischar)
push %ebp
mov %esp, %ebp
push %ebx
push %esi
push %edi
call EXT(prot_to_real) /* enter real mode */
@ -222,6 +236,8 @@ nochar:
xor %eax, %eax
movb %bl, %al
pop %edi
pop %esi
pop %ebx
pop %ebp
ret
@ -238,6 +254,8 @@ ENTRY(get_diskinfo)
mov %esp, %ebp
push %es
push %ebx
push %esi
push %edi
push %ecx
push %edx
@ -290,6 +308,8 @@ ok:
pop %edx
pop %ecx
pop %edi
pop %esi
pop %ebx
pop %es
pop %ebp
@ -309,6 +329,8 @@ ENTRY(memsize)
push %ebp
mov %esp, %ebp
push %ebx
push %esi
push %edi
mov 8(%ebp), %ebx
@ -336,6 +358,8 @@ xdone:
call EXT(real_to_prot)
mov %ebx, %eax
pop %edi
pop %esi
pop %ebx
pop %ebp
ret