summaryrefslogtreecommitdiffstats
path: root/contrib/syslinux-4.02/core/cmdline.inc
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/syslinux-4.02/core/cmdline.inc')
-rw-r--r--contrib/syslinux-4.02/core/cmdline.inc101
1 files changed, 101 insertions, 0 deletions
diff --git a/contrib/syslinux-4.02/core/cmdline.inc b/contrib/syslinux-4.02/core/cmdline.inc
new file mode 100644
index 0000000..3e63f9a
--- /dev/null
+++ b/contrib/syslinux-4.02/core/cmdline.inc
@@ -0,0 +1,101 @@
+;; -----------------------------------------------------------------------
+;;
+;; Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
+;; Copyright 2009 Intel Corporation; author: H. Peter Anvin
+;;
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, Inc., 53 Temple Place Ste 330,
+;; Boston MA 02111-1307, USA; either version 2 of the License, or
+;; (at your option) any later version; incorporated herein by reference.
+;;
+;; -----------------------------------------------------------------------
+
+;;
+;; cmdline.inc
+;;
+;; Common routine to assemble [null-terminated] command line into
+;; real_mode_seg:cmd_line_here.
+;; Not used by plain kernel due to BOOT_IMAGE= etc.
+;;
+
+ section .text16
+
+;
+; Assumes DS == CS
+;
+make_plain_cmdline:
+ push es
+ ; ui.inc has already copied any APPEND options
+ mov ax,real_mode_seg
+ mov es,ax
+
+ mov di,[CmdLinePtr]
+ call do_ip_append
+
+ mov si,[CmdOptPtr]
+
+ call strcpy
+
+ dec di
+ mov [CmdLinePtr],di
+ mov byte [es:di],0 ; Null-terminate
+
+ pop es
+ ret
+
+;
+; Actual IPAppend strings...
+;
+%if IS_PXELINUX
+ extern IPOption, BOOTIFStr, SYSUUIDStr
+ global IPAppends, numIPAppends
+
+ section .data16
+ alignz 2
+IPAppends dw IPOption
+ dw BOOTIFStr
+ dw SYSUUIDStr
+numIPAppends equ ($-IPAppends)/2
+%else
+IPAppends equ 0
+numIPAppends equ 0
+%endif
+
+;
+; Handle "ipappend" strings, if applicable
+;
+; Assumes DS == CS; pushes output to ES:DI
+;
+ section .text16
+
+do_ip_append:
+%ifndef DEPEND
+ %if numIPAppends > 0
+ push cx
+ push bx
+ push si
+
+ mov bx,IPAppends
+ mov cx,[IPAppend]
+ and cx,(1 << numIPAppends)-1
+.loop:
+ jcxz .done
+ mov si,[bx]
+ inc bx
+ inc bx
+ test cl,1
+ jz .not_this
+
+ call strcpy
+ mov byte [es:di-1],' ' ; Replace final null with space
+.not_this:
+ shr cx,1
+ jmp .loop
+.done:
+ pop si
+ pop bx
+ pop cx
+ %endif
+%endif
+ ret