summaryrefslogtreecommitdiffstats
path: root/src/arch/i386/include
diff options
context:
space:
mode:
authorMichael Brown2007-01-14 00:57:31 +0100
committerMichael Brown2007-01-14 00:57:31 +0100
commit0b0e34e667bca9e2b1bf451e52a2b7d3ef62cb25 (patch)
treeec9a7fe46258dbfa8a3d2f637e420453e09d739b /src/arch/i386/include
parentSome operating systems get a nasty shock if a region of the E820 map seems (diff)
downloadipxe-0b0e34e667bca9e2b1bf451e52a2b7d3ef62cb25.tar.gz
ipxe-0b0e34e667bca9e2b1bf451e52a2b7d3ef62cb25.tar.xz
ipxe-0b0e34e667bca9e2b1bf451e52a2b7d3ef62cb25.zip
Provide {get,set}_fbms() in basemem.h.
set_fbms() will also update the E820 hidden region.
Diffstat (limited to 'src/arch/i386/include')
-rw-r--r--src/arch/i386/include/basemem.h66
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 */