mirror of
https://github.com/ipxe/ipxe
synced 2025-12-07 18:00:28 +03:00
This removes the need for inline safety wrappers, marginally reducing the size penalty of weak functions, and works around an apparent binutils bug that causes undefined weak symbols to not actually be NULL when compiling with -fPIE (as EFI builds do). A bug in versions of binutils prior to 2.16 (released in 2005) will cause same-file weak definitions to not work with those toolchains. Update the README to reflect our new dependency on binutils >= 2.16. Signed-off-by: Joshua Oreman <oremanj@rwcr.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
44 lines
981 B
C
44 lines
981 B
C
#ifndef _PXE_CALL_H
|
|
#define _PXE_CALL_H
|
|
|
|
/** @file
|
|
*
|
|
* PXE API entry point
|
|
*/
|
|
|
|
FILE_LICENCE ( GPL2_OR_LATER );
|
|
|
|
#include <pxe_api.h>
|
|
#include <realmode.h>
|
|
#include <setjmp.h>
|
|
|
|
struct net_device;
|
|
|
|
/** PXE load address segment */
|
|
#define PXE_LOAD_SEGMENT 0
|
|
|
|
/** PXE load address offset */
|
|
#define PXE_LOAD_OFFSET 0x7c00
|
|
|
|
/** PXE physical load address */
|
|
#define PXE_LOAD_PHYS ( ( PXE_LOAD_SEGMENT << 4 ) + PXE_LOAD_OFFSET )
|
|
|
|
/** !PXE structure */
|
|
extern struct s_PXE __text16 ( ppxe );
|
|
#define ppxe __use_text16 ( ppxe )
|
|
|
|
/** PXENV+ structure */
|
|
extern struct s_PXENV __text16 ( pxenv );
|
|
#define pxenv __use_text16 ( pxenv )
|
|
|
|
/** PXENV_RESTART_TFTP jump buffer */
|
|
extern rmjmp_buf pxe_restart_nbp;
|
|
|
|
extern void pxe_activate ( struct net_device *netdev );
|
|
extern int pxe_deactivate ( void );
|
|
extern int pxe_start_nbp ( void );
|
|
extern __asmcall void pxe_api_call ( struct i386_all_regs *ix86 );
|
|
extern int pxe_api_call_weak ( struct i386_all_regs *ix86 );
|
|
|
|
#endif /* _PXE_CALL_H */
|