diff options
Diffstat (limited to 'src/arch/i386/include')
| -rw-r--r-- | src/arch/i386/include/basemem.h | 66 |
1 files changed, 33 insertions, 33 deletions
diff --git a/src/arch/i386/include/basemem.h b/src/arch/i386/include/basemem.h index 289824eb0..cd5668e01 100644 --- a/src/arch/i386/include/basemem.h +++ b/src/arch/i386/include/basemem.h @@ -1,33 +1,33 @@ -#ifndef BASEMEM_H -#define BASEMEM_H - -#ifdef ASSEMBLY - -/* Must match sizeof(struct free_base_memory_header) */ -#define FREE_BASEMEM_HEADER_SIZE 8 - -#else /* ASSEMBLY */ - -#include "stdint.h" - -/* Structures that we use to represent a free block of base memory */ - -#define FREE_BLOCK_MAGIC ( ('!'<<0) + ('F'<<8) + ('R'<<16) + ('E'<<24) ) -struct free_base_memory_header { - uint32_t magic; - uint32_t size_kb; -}; - -union free_base_memory_block { - struct free_base_memory_header header; - char bytes[1024]; -}; - -/* Function prototypes */ -extern unsigned int get_free_base_memory ( void ); -extern void * alloc_base_memory ( size_t size ); -extern void free_base_memory ( void *ptr, size_t size ); - -#endif /* ASSEMBLY */ - -#endif /* BASEMEM_H */ +#ifndef _BASEMEM_H +#define _BASEMEM_H + +/** @file + * + * Base memory allocation + * + */ + +#include <stdint.h> +#include <realmode.h> +#include <bios.h> + +/** + * Read the BIOS free base memory counter + * + * @ret fbms Free base memory counter (in kB) + */ +static inline unsigned int get_fbms ( void ) { + uint16_t fbms; + + get_real ( fbms, BDA_SEG, BDA_FBMS ); + return fbms; +} + +extern void set_fbms ( unsigned int new_fbms ); + +/* Actually in hidemem.c, but putting it here avoids polluting the + * architecture-independent include/hidemem.h. + */ +extern void hide_basemem ( void ); + +#endif /* _BASEMEM_H */ |
