[config] Make PXE stack a compile-time option
[people/cooldavid/gpxe.git] / src / arch / i386 / include / pxe_call.h
1 #ifndef _PXE_CALL_H
2 #define _PXE_CALL_H
3
4 /** @file
5  *
6  * PXE API entry point
7  */
8
9 FILE_LICENCE ( GPL2_OR_LATER );
10
11 #include <pxe_api.h>
12 #include <realmode.h>
13
14 struct net_device;
15
16 /** PXE load address segment */
17 #define PXE_LOAD_SEGMENT 0
18
19 /** PXE load address offset */
20 #define PXE_LOAD_OFFSET 0x7c00
21
22 /** PXE physical load address */
23 #define PXE_LOAD_PHYS ( ( PXE_LOAD_SEGMENT << 4 ) + PXE_LOAD_OFFSET )
24
25 /** !PXE structure */
26 extern struct s_PXE __text16 ( ppxe );
27 #define ppxe __use_text16 ( ppxe )
28
29 /** PXENV+ structure */
30 extern struct s_PXENV __text16 ( pxenv );
31 #define pxenv __use_text16 ( pxenv )
32
33 extern void pxe_activate ( struct net_device *netdev );
34 extern int pxe_deactivate ( void );
35 extern int pxe_start_nbp ( void );
36 extern __asmcall void pxe_api_call ( struct i386_all_regs *ix86 );
37 extern int _pxe_api_call_weak ( struct i386_all_regs *ix86 )
38         __attribute__ (( weak ));
39
40 /**
41  * Dispatch PXE API call weakly
42  *
43  * @v ix86              Registers for PXE call
44  * @ret present         Zero if the PXE stack is present, nonzero if not
45  *
46  * A successful return only indicates that the PXE stack was available
47  * for dispatching the call; it says nothing about the success of
48  * whatever the call asked for.
49  */
50 static inline int pxe_api_call_weak ( struct i386_all_regs *ix86 )
51 {
52         if ( _pxe_api_call_weak != NULL )
53                 return _pxe_api_call_weak ( ix86 );
54         return -1;
55 }
56
57 #endif /* _PXE_CALL_H */