mirror of https://github.com/ipxe/ipxe.git
rm_ss, rm_sp, and pm_esp don't need to be accessed from anywhere
outside of librm.S.pull/1/head
parent
b8a8eea850
commit
0ed066bc50
|
@ -60,9 +60,6 @@ extern char *text16;
|
||||||
( ( ( void * ) &(variable) ) - ( ( void * ) text16 ) ) ) )
|
( ( ( void * ) &(variable) ) - ( ( void * ) text16 ) ) ) )
|
||||||
|
|
||||||
/* Variables in librm.S, present in the normal data segment */
|
/* Variables in librm.S, present in the normal data segment */
|
||||||
extern uint16_t rm_sp;
|
|
||||||
extern uint16_t rm_ss;
|
|
||||||
extern uint32_t pm_esp;
|
|
||||||
extern uint16_t __data16 ( rm_cs );
|
extern uint16_t __data16 ( rm_cs );
|
||||||
#define rm_cs __use_data16 ( rm_cs )
|
#define rm_cs __use_data16 ( rm_cs )
|
||||||
extern uint16_t __text16 ( rm_ds );
|
extern uint16_t __text16 ( rm_ds );
|
||||||
|
|
|
@ -528,11 +528,8 @@ rc_function: .word 0, 0
|
||||||
****************************************************************************
|
****************************************************************************
|
||||||
*/
|
*/
|
||||||
.section ".data"
|
.section ".data"
|
||||||
.globl rm_sp
|
|
||||||
rm_sp: .word 0
|
rm_sp: .word 0
|
||||||
.globl rm_ss
|
|
||||||
rm_ss: .word 0
|
rm_ss: .word 0
|
||||||
.globl pm_esp
|
|
||||||
pm_esp: .long _estack
|
pm_esp: .long _estack
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
/*
|
|
||||||
* librm: a library for interfacing to real-mode code
|
|
||||||
*
|
|
||||||
* Michael Brown <mbrown@fensystems.co.uk>
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef KEEP_IT_REAL
|
|
||||||
/* Build a null object under -DKEEP_IT_REAL */
|
|
||||||
#else
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <librm.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file provides functions for managing librm.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Allocate space on the real-mode stack and copy data there.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
uint16_t copy_to_rm_stack ( void *data, size_t size ) {
|
|
||||||
#ifdef DEBUG_LIBRM
|
|
||||||
if ( rm_sp <= size ) {
|
|
||||||
printf ( "librm: out of space in RM stack\n" );
|
|
||||||
lockup();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
rm_sp -= size;
|
|
||||||
copy_to_real ( rm_ss, rm_sp, data, size );
|
|
||||||
return rm_sp;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Deallocate space on the real-mode stack, optionally copying back
|
|
||||||
* data.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void remove_from_rm_stack ( void *data, size_t size ) {
|
|
||||||
if ( data ) {
|
|
||||||
copy_from_real ( data, rm_ss, rm_sp, size );
|
|
||||||
}
|
|
||||||
rm_sp += size;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* KEEP_IT_REAL */
|
|
Loading…
Reference in New Issue