summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/arch/i386/core/hooks.c10
-rw-r--r--src/arch/i386/include/hooks.h2
-rw-r--r--src/arch/i386/include/realmode.h5
-rw-r--r--src/arch/i386/prefix/int19exit.c14
-rw-r--r--src/arch/i386/prefix/select_isapnp.c6
-rw-r--r--src/arch/i386/prefix/select_pci.c4
-rw-r--r--src/arch/i386/transitions/libkir.S10
-rw-r--r--src/arch/i386/transitions/librm.S34
-rw-r--r--src/arch/i386/transitions/librm_mgmt.c4
9 files changed, 44 insertions, 45 deletions
diff --git a/src/arch/i386/core/hooks.c b/src/arch/i386/core/hooks.c
index b2c82a1e2..313dc6181 100644
--- a/src/arch/i386/core/hooks.c
+++ b/src/arch/i386/core/hooks.c
@@ -13,20 +13,20 @@
* the prefix requested.
*
*/
-void arch_main ( struct i386_all_regs *regs ) {
- void (*exit_path) ( struct i386_all_regs *regs );
+void arch_main ( struct i386_all_regs *ix86 ) {
+ void (*exit_path) ( struct i386_all_regs *ix86 );
/* Determine exit path requested by prefix */
- exit_path = ( typeof ( exit_path ) ) regs->eax;
+ exit_path = ( typeof ( exit_path ) ) ix86->regs.eax;
/* Call to main() */
- regs->eax = main();
+ ix86->regs.eax = main();
if ( exit_path ) {
/* Prefix requested that we use a particular function
* as the exit path, so we call this function, which
* must not return.
*/
- exit_path ( regs );
+ exit_path ( ix86 );
}
}
diff --git a/src/arch/i386/include/hooks.h b/src/arch/i386/include/hooks.h
index 95b9aaa36..3cef262f9 100644
--- a/src/arch/i386/include/hooks.h
+++ b/src/arch/i386/include/hooks.h
@@ -1,6 +1,6 @@
#ifndef HOOKS_H
#define HOOKS_H
-extern void arch_main ( struct i386_all_regs *regs );
+extern void arch_main ( struct i386_all_regs *ix86 );
#endif /* HOOKS_H */
diff --git a/src/arch/i386/include/realmode.h b/src/arch/i386/include/realmode.h
index cd6fcfc73..fe0111846 100644
--- a/src/arch/i386/include/realmode.h
+++ b/src/arch/i386/include/realmode.h
@@ -12,11 +12,6 @@
*
*/
-/* All i386 registers, as passed in by prot_call or kir_call */
-struct real_mode_regs {
- struct i386_all_regs;
-} PACKED;
-
/* Segment:offset structure. Note that the order within the structure
* is offset:segment.
*/
diff --git a/src/arch/i386/prefix/int19exit.c b/src/arch/i386/prefix/int19exit.c
index e7be06244..282ece734 100644
--- a/src/arch/i386/prefix/int19exit.c
+++ b/src/arch/i386/prefix/int19exit.c
@@ -1,13 +1,17 @@
#include "bochs.h"
#include "realmode.h"
-/*
- * The "exit via INT 19" exit path. INT 19 is the old (pre-BBS) "boot
- * system" interrupt.
+/**
+ * The "exit via INT 19" exit path.
+ *
+ * INT 19 is the old (pre-BBS) "boot system" interrupt. It is
+ * conventionally used now to return from a failed boot from floppy
+ * disk.
+ *
+ * @bug Not yet implemented
*
*/
-
-void exit_via_int19 ( struct real_mode_regs *rm_regs ) {
+void exit_via_int19 ( struct i386_all_regs *ix86 ) {
bochsbp();
/* Placeholder */
}
diff --git a/src/arch/i386/prefix/select_isapnp.c b/src/arch/i386/prefix/select_isapnp.c
index 54ac1c9a3..6a539eb5e 100644
--- a/src/arch/i386/prefix/select_isapnp.c
+++ b/src/arch/i386/prefix/select_isapnp.c
@@ -11,7 +11,7 @@
* would cause linker symbol pollution.
*
*/
-void i386_select_isapnp_device ( struct i386_all_regs *regs ) {
+void i386_select_isapnp_device ( struct i386_all_regs *ix86 ) {
/*
* PnP BIOS passes card select number in %bx and read port
* address in %dx.
@@ -23,10 +23,10 @@ void i386_select_isapnp_device ( struct i386_all_regs *regs ) {
} u;
/* Set ISAPnP read port */
- isapnp_read_port = regs->dx;
+ isapnp_read_port = ix86->regs.dx;
/* Select ISAPnP bus and specified CSN as first boot device */
memset ( &u, 0, sizeof ( u ) );
- u.isapnp_loc.csn = regs->bx;
+ u.isapnp_loc.csn = ix86->regs.bx;
select_device ( &dev, &isapnp_driver, &u.bus_loc );
}
diff --git a/src/arch/i386/prefix/select_pci.c b/src/arch/i386/prefix/select_pci.c
index c9a62d526..e143b992a 100644
--- a/src/arch/i386/prefix/select_pci.c
+++ b/src/arch/i386/prefix/select_pci.c
@@ -11,7 +11,7 @@
* that would cause linker symbol pollution.
*
*/
-void i386_select_pci_device ( struct i386_all_regs *regs ) {
+void i386_select_pci_device ( struct i386_all_regs *ix86 ) {
/*
* PCI BIOS passes busdevfn in %ax
*
@@ -23,6 +23,6 @@ void i386_select_pci_device ( struct i386_all_regs *regs ) {
/* Select PCI bus and specified busdevfn as first boot device */
memset ( &u, 0, sizeof ( u ) );
- u.pci_loc.busdevfn = regs->ax;
+ u.pci_loc.busdevfn = ix86->regs.ax;
select_device ( &dev, &pci_driver, &u.bus_loc );
}
diff --git a/src/arch/i386/transitions/libkir.S b/src/arch/i386/transitions/libkir.S
index 79a0aa00f..e0d6c57c2 100644
--- a/src/arch/i386/transitions/libkir.S
+++ b/src/arch/i386/transitions/libkir.S
@@ -135,12 +135,12 @@ kir_to_ext:
*
* Call a specific C function in the internal code. The prototype of
* the C function must be
- * void function ( struct real_mode_regs *rm_regs );
- * rm_regs will point to a struct containing the real-mode registers
+ * void function ( struct i386_all_resg *ix86 );
+ * ix86 will point to a struct containing the real-mode registers
* at entry to kir_call.
*
* All registers will be preserved across kir_call(), unless the C
- * function explicitly overwrites values in rm_regs. Interrupt status
+ * function explicitly overwrites values in ix86. Interrupt status
* will also be preserved.
*
* Parameters:
@@ -151,7 +151,7 @@ kir_to_ext:
* lcall $UNDI_CS, $kir_call
* addw $2, %sp
* to call in to the C function
- * void pxe_api_call ( struct real_mode_regs *rm_regs );
+ * void pxe_api_call ( struct i386_all_regs *ix86 );
****************************************************************************
*/
@@ -190,7 +190,7 @@ kir_call:
pushl %cs:ext_ds_and_es
pushl %cs:ext_cs_and_ss
- /* Push &rm_regs on stack and call function */
+ /* Push &ix86 on stack and call function */
pushl %esp
data32 call *%cs:save_function
popl %eax /* discard */
diff --git a/src/arch/i386/transitions/librm.S b/src/arch/i386/transitions/librm.S
index 6e2f12292..2e6ac47bb 100644
--- a/src/arch/i386/transitions/librm.S
+++ b/src/arch/i386/transitions/librm.S
@@ -106,11 +106,11 @@
/* Size of various C data structures */
#define SIZEOF_I386_SEG_REGS 12
#define SIZEOF_I386_REGS 32
-#define SIZEOF_I386_ALL_REGS ( SIZEOF_I386_SEG_REGS + SIZEOF_I386_REGS )
+#define SIZEOF_REAL_MODE_REGS ( SIZEOF_I386_SEG_REGS + SIZEOF_I386_REGS )
#define SIZEOF_I386_FLAGS 4
-#define SIZEOF_REAL_MODE_REGS ( SIZEOF_I386_ALL_REGS + SIZEOF_I386_FLAGS )
+#define SIZEOF_I386_ALL_REGS ( SIZEOF_REAL_MODE_REGS + SIZEOF_I386_FLAGS )
#define SIZEOF_SEGOFF_T 4
-#define SIZEOF_REAL_CALL_PARAMS ( SIZEOF_I386_ALL_REGS + 2 * SIZEOF_SEGOFF_T )
+#define SIZEOF_REAL_CALL_PARAMS ( SIZEOF_REAL_MODE_REGS + 2 * SIZEOF_SEGOFF_T )
.text
.arch i386
@@ -461,12 +461,12 @@ p2r_ljmp:
*
* Call a specific C function in the protected-mode code. The
* prototype of the C function must be
- * void function ( struct real_mode_regs *rm_regs );
- * rm_regs will point to a struct containing the real-mode registers
+ * void function ( struct i386_all_regs *ix86 );
+ * ix86 will point to a struct containing the real-mode registers
* at entry to prot_call.
*
* All registers will be preserved across prot_call(), unless the C
- * function explicitly overwrites values in rm_regs. Interrupt status
+ * function explicitly overwrites values in ix86. Interrupt status
* will also be preserved. Gate A20 will be enabled.
*
* The protected-mode code may install librm to a new location. If it
@@ -495,12 +495,12 @@ p2r_ljmp:
* lcall $LIBRM_SEGMENT, $prot_call
* addw $4, %sp
* to call in to the C function
- * void pxe_api_call ( struct real_mode_regs *rm_regs );
+ * void pxe_api_call ( struct i386_all_regs *ix86 );
****************************************************************************
*/
-#define PC_OFFSET_RM_REGS ( 0 )
-#define PC_OFFSET_RETADDR ( PC_OFFSET_RM_REGS + SIZEOF_REAL_MODE_REGS )
+#define PC_OFFSET_IX86 ( 0 )
+#define PC_OFFSET_RETADDR ( PC_OFFSET_IX86 + SIZEOF_I386_ALL_REGS )
#define PC_OFFSET_FUNCTION ( PC_OFFSET_RETADDR + 4 )
.code16
@@ -534,14 +534,14 @@ EXPORT(prot_call):
call real_to_prot
.code32
- /* Copy rm_regs from RM stack to PM stack */
- movl $SIZEOF_REAL_MODE_REGS, %ecx
+ /* Copy ix86 from RM stack to PM stack */
+ movl $SIZEOF_I386_ALL_REGS, %ecx
subl %ecx, %esp
movl %esp, %edi
pushl %esi
cld
rep movsb
- popl %edi /* %edi = phys addr of RM copy of rm_regs */
+ popl %edi /* %edi = phys addr of RM copy of ix86 */
/* Switch to virtual addresses. */
call 1f
@@ -555,7 +555,7 @@ EXPORT(prot_call):
popl %eax /* discard */
popal
- /* Push &rm_regs on the stack, and call function */
+ /* Push &ix86 on the stack, and call function */
pushl %esp
call *%ebx
popl %eax /* discard */
@@ -564,16 +564,16 @@ EXPORT(prot_call):
lcall $VIRTUAL_CS, $_virt_to_phys
popl %eax /* discard */
- /* Copy rm_regs from PM stack to RM stack, and remove rm_regs
+ /* Copy ix86 from PM stack to RM stack, and remove ix86
* from PM stack. (%edi still contains physical address of
- * rm_regs on RM stack from earlier, since C code preserves
+ * ix86 on RM stack from earlier, since C code preserves
* %edi).
*/
movl %esp, %esi
- movl $SIZEOF_REAL_MODE_REGS, %ecx
+ movl $SIZEOF_I386_ALL_REGS, %ecx
cld
rep movsb
- movl %esi, %esp /* remove rm_regs from PM stack */
+ movl %esi, %esp /* remove ix86 from PM stack */
/* Obtain physical base address of installed copy of librm in
* %ebx. (It's possible that this *isn't* the physical base
diff --git a/src/arch/i386/transitions/librm_mgmt.c b/src/arch/i386/transitions/librm_mgmt.c
index ffd55ff61..956408f54 100644
--- a/src/arch/i386/transitions/librm_mgmt.c
+++ b/src/arch/i386/transitions/librm_mgmt.c
@@ -139,7 +139,7 @@ POST_RELOC_FN ( POST_RELOC_LIBRM, librm_post_reloc );
* pointer to this new librm's entry point via es:di.
*
*/
-void initialise_via_librm ( struct i386_all_regs *regs ) {
+void initialise_via_librm ( struct i386_all_regs *ix86 ) {
/* Hand off to initialise() */
initialise ();
@@ -147,7 +147,7 @@ void initialise_via_librm ( struct i386_all_regs *regs ) {
* already set up by setup16, so all we need to do is point
* es:0000 to the start of the new librm.
*/
- regs->es = librm_base >> 4;
+ ix86->segs.es = librm_base >> 4;
}
/*