6e7c22ddab73353313e65276dfb5f3d53f171b8f
[people/pcmattman/gpxe.git] / src / arch / i386 / include / basemem.h
1 #ifndef BASEMEM_H
2 #define BASEMEM_H
3
4 #ifdef ASSEMBLY
5
6 /* Must match sizeof(struct free_base_memory_header) */
7 #define FREE_BASEMEM_HEADER_SIZE 8
8
9 #else /* ASSEMBLY */
10
11 #include "stdint.h"
12
13 /* Structures that we use to represent a free block of base memory */
14
15 #define FREE_BLOCK_MAGIC ( ('!'<<0) + ('F'<<8) + ('R'<<16) + ('E'<<24) )
16 struct free_base_memory_header {
17         uint32_t        magic;
18         uint32_t        size_kb;
19 };
20
21 union free_base_memory_block {
22         struct free_base_memory_header;
23         char bytes[1024];
24 };
25
26 /* Function prototypes */
27 extern unsigned int get_free_base_memory ( void );
28 extern void * alloc_base_memory ( size_t size );
29 extern void free_base_memory ( void *ptr, size_t size );
30
31 #endif /* ASSEMBLY */
32
33 #endif /* BASEMEM_H */