root/core/cmdline.inc

Revision ccce101b32ae26dd180ecaebe95cc749c2f90373, 1.9 KB (checked in by H. Peter Anvin <hpa@…>, 23 months ago)

pxelinux: new IPAPPEND 4 to generate a SYSUUID= option.

Add a new IPAPPEND option to generate a SYSUUID= option with the
in-system UUID.

Signed-off-by: H. Peter Anvin <hpa@…>

  • Property mode set to 100644
Line 
1;; -----------------------------------------------------------------------
2;;
3;;   Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
4;;   Copyright 2009 Intel Corporation; author: H. Peter Anvin
5;;
6;;   This program is free software; you can redistribute it and/or modify
7;;   it under the terms of the GNU General Public License as published by
8;;   the Free Software Foundation, Inc., 53 Temple Place Ste 330,
9;;   Boston MA 02111-1307, USA; either version 2 of the License, or
10;;   (at your option) any later version; incorporated herein by reference.
11;;
12;; -----------------------------------------------------------------------
13
14;;
15;; cmdline.inc
16;;
17;; Common routine to assemble [null-terminated] command line into
18;; real_mode_seg:cmd_line_here.
19;; Not used by plain kernel due to BOOT_IMAGE= etc.
20;;
21
22                section .text16
23
24;
25; Assumes DS == CS
26;
27make_plain_cmdline:
28                push es
29                ; ui.inc has already copied any APPEND options
30                mov ax,real_mode_seg
31                mov es,ax
32
33                mov di,[CmdLinePtr]
34                call do_ip_append
35
36                mov si,[CmdOptPtr]
37
38                call strcpy
39
40                dec di
41                mov [CmdLinePtr],di
42                mov byte [es:di],0              ; Null-terminate
43
44                pop es
45                ret
46
47;
48; Actual IPAppend strings...
49;
50%if IS_PXELINUX
51                extern IPOption, BOOTIFStr, SYSUUIDStr
52                global IPAppends, numIPAppends
53
54                section .data16
55                alignz 2
56IPAppends       dw IPOption
57                dw BOOTIFStr
58                dw SYSUUIDStr
59numIPAppends    equ ($-IPAppends)/2
60%else
61IPAppends       equ 0
62numIPAppends    equ 0
63%endif
64
65;
66; Handle "ipappend" strings, if applicable
67;
68; Assumes DS == CS; pushes output to ES:DI
69;
70                section .text16
71
72do_ip_append:
73%ifndef DEPEND
74 %if numIPAppends > 0
75                push cx
76                push bx
77                push si
78
79                mov bx,IPAppends
80                mov cx,[IPAppend]
81                and cx,(1 << numIPAppends)-1
82.loop:
83                jcxz .done
84                mov si,[bx]
85                inc bx
86                inc bx
87                test cl,1
88                jz .not_this
89
90                call strcpy
91                mov byte [es:di-1],' '  ; Replace final null with space
92.not_this:
93                shr cx,1
94                jmp .loop
95.done:
96                pop si
97                pop bx
98                pop cx
99 %endif
100%endif
101                ret
Note: See TracBrowser for help on using the browser.