|
@@ -8,6 +8,9 @@
|
8
|
8
|
/* Drag in local definitions */
|
9
|
9
|
#include "librm.h"
|
10
|
10
|
|
|
11
|
+/* Drag in FREE_BASEMEM_HEADER_SIZE */
|
|
12
|
+#include "basemem.h"
|
|
13
|
+
|
11
|
14
|
/****************************************************************************
|
12
|
15
|
* This file defines librm: a block of code that is designed to reside
|
13
|
16
|
* permanently in base memory and provide the interface between
|
|
@@ -129,6 +132,19 @@ _librm_start:
|
129
|
132
|
.equ _ ## sym, OFFSET(sym) ; \
|
130
|
133
|
sym
|
131
|
134
|
|
|
135
|
+/****************************************************************************
|
|
136
|
+ * Note that the first sizeof(struct free_base_memory_header) bytes of
|
|
137
|
+ * librm will get vapourised by free_base_memory(). Since we need
|
|
138
|
+ * librm to continue working even when this happens, we put some
|
|
139
|
+ * padding here.
|
|
140
|
+ *
|
|
141
|
+ * We must also ensure that the total size of librm is <1kB, otherwise
|
|
142
|
+ * free_base_memory() will stomp somewhere in the middle of us as
|
|
143
|
+ * well...
|
|
144
|
+ ****************************************************************************
|
|
145
|
+ */
|
|
146
|
+ .fill FREE_BASEMEM_HEADER_SIZE, 1, 0
|
|
147
|
+
|
132
|
148
|
/****************************************************************************
|
133
|
149
|
* GDT for initial transition to protected mode
|
134
|
150
|
*
|