summaryrefslogtreecommitdiff
path: root/parseconfig.inc
diff options
context:
space:
mode:
Diffstat (limited to 'parseconfig.inc')
-rw-r--r--parseconfig.inc26
1 files changed, 11 insertions, 15 deletions
diff --git a/parseconfig.inc b/parseconfig.inc
index 739a884b..90c1f3c9 100644
--- a/parseconfig.inc
+++ b/parseconfig.inc
@@ -399,23 +399,12 @@ commit_vk:
xor ax,ax
rep stosb
- ; Pack temporarily into trackbuf
+ ; Pack into high memory
mov si,VKernelBuf
- mov di,trackbuf
+ mov edi,[VKernelEnd]
mov cx,vk_size
call rllpack
- ; Now DX = number of bytes
- mov di,[VKernelBytes]
- mov cx,dx
- add dx,di
- jc .overflow ; If > 1 segment
- mov [VKernelBytes],dx
- mov si,trackbuf
- push es
- push word vk_seg
- pop es
- rep movsb
- pop es
+ mov [VKernelEnd],edi
ret
.overflow:
mov si,vk_overflow_msg
@@ -426,6 +415,14 @@ commit_vk:
vk_overflow_msg db 'Out of memory parsing config file', CR, LF, 0
SerialNotice db 1 ; Only print this once
+ section .bss
+ alignb 4
+VKernelEnd resd 1 ; Lowest high memory address used
+
+ ; This symbol should be used by loaders to indicate
+ ; the highest address *they* are allowed to use.
+HighMemRsvd equ VKernelEnd
+ ; by vkernels
section .config
align 4, db 0
KbdTimeout dd 0 ; Keyboard timeout (if any)
@@ -440,7 +437,6 @@ AllowImplicit dw 1 ; Allow implicit kernels
AllowOptions dw 1 ; User-specified options allowed
IncludeLevel dw 1 ; Nesting level
SerialPort dw 0 ; Serial port base (or 0 for no serial port)
-VKernelBytes dw 0 ; Number of bytes used by vkernels
VKernel db 0 ; Have we seen any "label" statements?
%if IS_PXELINUX