aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhpa <hpa>2004-08-04 06:14:12 +0000
committerhpa <hpa>2004-08-04 06:14:12 +0000
commitda900b66fdec8f6c4609df2ce72881bd3f6987a8 (patch)
tree78d3be8ea810c9721312a50f2b763431d93685be
parentffd9cb024e1ca235fb44b9d89a7e7164f953fc5b (diff)
downloadsyslinux-elf-da900b66fdec8f6c4609df2ce72881bd3f6987a8.tar.gz
syslinux-elf-da900b66fdec8f6c4609df2ce72881bd3f6987a8.tar.xz
syslinux-elf-da900b66fdec8f6c4609df2ce72881bd3f6987a8.zip
Clean up memory management and command-line creation
-rw-r--r--isolinux.asm11
-rw-r--r--ldlinux.asm3
-rw-r--r--pxelinux.asm11
-rw-r--r--runkernel.inc3
4 files changed, 15 insertions, 13 deletions
diff --git a/isolinux.asm b/isolinux.asm
index 0e7d75f3..203d5ea9 100644
--- a/isolinux.asm
+++ b/isolinux.asm
@@ -216,6 +216,10 @@ TextColorReg resb 17 ; VGA color registers for text mode
VGAFileBuf resb FILENAME_MAX ; Unmangled VGA image name
VGAFileBufEnd equ $
VGAFileMBuf resb FILENAME_MAX ; Mangled VGA image name
+ alignb 4 ; For the good of REP MOVSD
+command_line resb max_cmd_len+2 ; Command line buffer
+ alignb 4
+default_cmd resb max_cmd_len+1 ; "default" command line
alignb open_file_t_size
Files resb MAX_OPEN*open_file_t_size
@@ -1712,11 +1716,8 @@ linuxauto_cmd db 'linux auto',0
linuxauto_len equ $-linuxauto_cmd
boot_image db 'BOOT_IMAGE='
boot_image_len equ $-boot_image
- align 4, db 0 ; For the good of REP MOVSD
-command_line equ $
-default_cmd equ $+(max_cmd_len+2)
-ldlinux_end equ default_cmd+(max_cmd_len+1)
-kern_cmd_len equ ldlinux_end-command_line
+ldlinux_end equ $
+
;
; Put the getcbuf right after the code, aligned on a sector boundary
;
diff --git a/ldlinux.asm b/ldlinux.asm
index b58211b0..366ed18e 100644
--- a/ldlinux.asm
+++ b/ldlinux.asm
@@ -216,8 +216,8 @@ VGAFileBufEnd equ $
VGAFileMBuf resb 11 ; Mangled VGA image name
alignb 4 ; For the good of REP MOVSD
command_line resb max_cmd_len+2 ; Command line buffer
+ alignb 4
default_cmd resb max_cmd_len+1 ; "default" command line
-kern_cmd_len equ $-command_line
section .text
org 7C00h
@@ -1356,6 +1356,7 @@ lc_ret: ret
%include "font.inc" ; VGA font stuff
%include "graphics.inc" ; VGA graphics
%include "highmem.inc" ; High memory sizing
+%include "strcpy.inc" ; strcpy()
; -----------------------------------------------------------------------------
; Begin data section
diff --git a/pxelinux.asm b/pxelinux.asm
index 2140d5b5..6885cd99 100644
--- a/pxelinux.asm
+++ b/pxelinux.asm
@@ -300,6 +300,10 @@ TextColorReg resb 17 ; VGA color registers for text mode
VGAFileBuf resb FILENAME_MAX ; Unmangled VGA image name
VGAFileBufEnd equ $
VGAFileMBuf resb FILENAME_MAX ; Mangled VGA image name
+ alignb 4 ; For the good of REP MOVSD
+command_line resb max_cmd_len+2 ; Command line buffer
+ alignb 4
+default_cmd resb max_cmd_len+1 ; "default" command line
;
; PXE packets which don't need static initialization
@@ -2560,11 +2564,8 @@ linuxauto_cmd db 'linux auto',0
linuxauto_len equ $-linuxauto_cmd
boot_image db 'BOOT_IMAGE='
boot_image_len equ $-boot_image
- align 4, db 0 ; For the good of REP MOVSD
-command_line equ $
-default_cmd equ $+(max_cmd_len+2)
-ldlinux_end equ default_cmd+(max_cmd_len+1)
-kern_cmd_len equ ldlinux_end-command_line
+ldlinux_end equ $
+
;
; Put the getcbuf right after the code, aligned on a sector boundary
;
diff --git a/runkernel.inc b/runkernel.inc
index 5ad10d53..2c51b7f8 100644
--- a/runkernel.inc
+++ b/runkernel.inc
@@ -122,8 +122,7 @@ construct_cmdline:
SPECIAL_APPEND ; Module-specific hook
mov si,[CmdOptPtr] ; Options from user input
- mov cx,(kern_cmd_len+3) >> 2
- rep movsd
+ call strcpy
;
; Scan through the command line for anything that looks like we might be