diff options
Diffstat (limited to 'contrib/syslinux-4.02/core/cmdline.inc')
-rw-r--r-- | contrib/syslinux-4.02/core/cmdline.inc | 101 |
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 |