summaryrefslogtreecommitdiffstats
path: root/contrib/syslinux/latest/core/parseconfig.inc
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/syslinux/latest/core/parseconfig.inc')
-rw-r--r--contrib/syslinux/latest/core/parseconfig.inc477
1 files changed, 0 insertions, 477 deletions
diff --git a/contrib/syslinux/latest/core/parseconfig.inc b/contrib/syslinux/latest/core/parseconfig.inc
deleted file mode 100644
index 69681d9..0000000
--- a/contrib/syslinux/latest/core/parseconfig.inc
+++ /dev/null
@@ -1,477 +0,0 @@
-;; -----------------------------------------------------------------------
-;;
-;; Copyright 1994-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.
-;;
-;; -----------------------------------------------------------------------
-
-;;
-;; parseconfig.inc
-;;
-;; Configuration file operations
-;;
-
- section .text16
-;
-; "default" or "ui" command, with level (1 = default, 2 = ui)
-;
-pc_default: cmp ax,[DefaultLevel]
- jb skipline ; == call skipline + ret
- mov [DefaultLevel],ax
- mov di,default_cmd
- call getline
- mov byte [di-1],0 ; null-terminate
- ret
-
-;
-; "ontimeout" command
-;
-pc_ontimeout: mov di,Ontimeout
- call getline
- sub di,Ontimeout+1 ; Don't need final space
- mov [OntimeoutLen],di
- ret
-
-;
-; "onerror" command
-;
-pc_onerror: mov di,Onerror
- call getline
- sub di,Onerror
- mov [OnerrorLen],di
- ret
-
-;
-; "append" command
-;
-pc_append: cmp byte [VKernel],0
- ja .vk
- mov di,AppendBuf
- call getline
- sub di,AppendBuf
-.app1: mov [AppendLen],di
- ret
-.vk: mov di,VKernelBuf+vk_append ; "append" command (vkernel)
- call getline
- sub di,VKernelBuf+vk_append
- cmp di,byte 2
- jne .app2
- cmp byte [VKernelBuf+vk_append],'-'
- jne .app2
- xor di,di ; If "append -" -> null string
-.app2: mov [VKernelBuf+vk_appendlen],di
- ret
-
-;
-; "ipappend" command (PXELINUX only)
-;
-%if IS_PXELINUX
-pc_ipappend: call getint
- jc .err
- cmp byte [VKernel],0
- jne .vk
- mov [IPAppend],bl
-.err: ret
-.vk: mov [VKernelBuf+vk_ipappend],bl
- ret
-%endif
-
-;
-; "localboot" command
-;
-%if HAS_LOCALBOOT
-
-pc_localboot: call getint
- cmp byte [VKernel],0 ; ("label" section only)
- je .err
- mov [VKernelBuf+vk_rname],bx
- mov byte [VKernelBuf+vk_type],VK_LOCALBOOT
-.err: ret
-
-%endif ; HAS_LOCALBOOT
-
-;
-; "kernel", "config", ... command
-;
-pc_kernel: cmp byte [VKernel],0
- je .err ; ("label" section only)
- mov [VKernelBuf+vk_type],al
- call pc_getline
- mov di,VKernelBuf+vk_rname
- pm_call pm_mangle_name
-.err: ret
-
-;
-; "timeout", "totaltimeout" command
-;
-; N.B. 1/10 s ~ 1.D2162AABh clock ticks
-;
-pc_timeout: push ax
- call getint
- pop si
- jc .err
- mov eax,0D2162AABh
- mul ebx ; clock ticks per 1/10 s
- add ebx,edx
- mov [si],ebx
-.err: ret
-
-
-;
-; "totaltimeout" command
-;
-pc_totaltimeout:
-
-;
-; Generic integer variable setting commands:
-; "prompt", "implicit"
-;
-pc_setint16:
- push ax
- call getint
- pop si
- jc .err
- mov [si],bx
-.err: ret
-
-;
-; Generic file-processing commands:
-; "font", "kbdmap",
-;
-pc_filecmd: push ax ; Function to tailcall
- call pc_getline
- mov di,MNameBuf
- pm_call pm_mangle_name
- pm_call pm_searchdir
- jnz .ok
- pop ax ; Drop the successor function
-.ok: ret ; Tailcall if OK, error return
-
-;
-; Commands that expect the file to be opened on top of the getc stack.
-; "display", "include"
-;
-pc_opencmd: push ax ; Function to tailcall
- call pc_getline
- mov di,MNameBuf
- pm_call pm_mangle_name
- call core_open
- jnz .ok
- pop ax ; Drop the successor function
-.ok: ret ; Tailcall if OK, error return
-
-;
-; "include" command (invoked from pc_opencmd)
-;
-pc_include: inc word [IncludeLevel]
-.err: ret
-
-;
-; "serial" command
-;
-pc_serial: call getint
- jc .err
- push bx ; Serial port #
- xor eax,eax
- mov [FlowControl],eax ; Default to no flow control
- call skipspace
- jc .nobaud
- call ungetc
- call getint
- jc .nobaud
-.valid_baud:
- push ebx
- call skipspace
- jc .no_flow
- call ungetc
- call getint ; Hardware flow control?
- jnc .valid_flow
-.no_flow:
- xor bx,bx ; Default -> no flow control
-.valid_flow:
- and bh,0Fh ; FlowIgnore
- shl bh,4
- mov [FlowIgnore],bh
- mov bh,bl
- and bx,0F00Bh ; Valid bits
- mov [FlowControl],bx
- pop ebx ; Baud rate
- jmp short .parse_baud
-.nobaud:
- mov ebx,DEFAULT_BAUD ; No baud rate given
-.parse_baud:
- pop di ; Serial port #
- cmp ebx,byte 75
- jb .err ; < 75 baud == bogus
- mov eax,BAUD_DIVISOR
- cdq
- div ebx
- mov [BaudDivisor],ax
- push ax ; Baud rate divisor
- cmp di,3
- ja .port_is_io ; If port > 3 then port is I/O addr
- shl di,1
- mov di,[di+serial_base] ; Get the I/O port from the BIOS
-.port_is_io:
- mov [SerialPort],di
-
- ;
- ; Begin code to actually set up the serial port
- ;
- call sirq_cleanup_nowipe ; Cleanup existing IRQ handler
-
- lea dx,[di+3] ; DX -> LCR
- mov al,83h ; Enable DLAB
- slow_out dx,al
-
- pop ax ; Divisor
- mov dx,di ; DX -> LS
- slow_out dx,al
-
- inc dx ; DX -> MS
- mov al,ah
- slow_out dx,al
-
- mov al,03h ; Disable DLAB
- inc dx ; DX -> LCR
- inc dx
- slow_out dx,al
-
- in al,dx ; Read back LCR (detect missing hw)
- cmp al,03h ; If nothing here we'll read 00 or FF
- jne .err ; Assume serial port busted
- dec dx ; DX -> IIR/FCR
- mov al,01h
- slow_out dx,al ; Enable FIFOs if present
- in al,dx
- cmp al,0C0h ; FIFOs enabled and usable?
- jae .fifo_ok
- xor ax,ax ; Disable FIFO if unusable
- slow_out dx,al
-.fifo_ok:
-
- inc dx
- inc dx ; DX -> MCR
- mov al,[FlowOutput] ; Assert bits
- slow_out dx,al
-
- ; Enable interrupts if requested
- test al,8
- jz .noirq
- call sirq_install
-.noirq:
-
- ; Show some life
- cmp byte [SerialNotice],0
- je .notfirst
- mov byte [SerialNotice],0
-
- mov si,syslinux_banner
- call write_serial_str
- mov si,copyright_str
- call write_serial_str
-.notfirst:
- ret
-
-.err:
- mov [SerialPort], word 0
- ret
-
-;
-; Store mangled filename command (F-keys, "initrd")
-;
-pc_filename: push ax
- call pc_getline
- pop di
- pm_call pm_mangle_name ; Mangle file name
- ret
-
-;
-; "label" command
-;
-pc_label: call commit_vk ; Commit any current vkernel
- mov byte [InitRD+NULLOFFSET],NULLFILE ; No "initrd" statement
- mov di,VKernelBuf ; Erase the vkernelbuf for better compression
- mov cx,(vk_size >> 1)
- xor ax,ax
- rep stosw
- call pc_getline
- mov di,VKernelBuf+vk_vname
- mov cx,FILENAME_MAX-1
-.loop:
- lodsb
- cmp al,' '
- jna .done
- stosb
- loop .loop
-.done:
- mov byte [VKernel],1 ; We've seen a "label" statement
- mov si,VKernelBuf+vk_vname ; By default, rname == mangled vname
- mov di,VKernelBuf+vk_rname
- pm_call pm_mangle_name
- mov si,AppendBuf ; Default append==global append
- mov di,VKernelBuf+vk_append
- mov cx,[AppendLen]
- mov [VKernelBuf+vk_appendlen],cx
- rep movsb
-%if IS_PXELINUX ; PXELINUX only
- mov al,[IPAppend] ; Default ipappend==global ipappend
- mov [VKernelBuf+vk_ipappend],al
-%endif
- ret
-
-;
-; "say" command
-;
-pc_say: call pc_getline ; "say" command
- call writestr
- jmp crlf ; tailcall
-
-;
-; "text" command; ignore everything until we get an "endtext" line
-;
-pc_text: call skipline ; Ignore rest of line
-.loop:
- call pc_getline
- jc .eof
-
- ; Leading spaces are already removed...
- lodsd
- and eax,0xdfdfdfdf ; Upper case
- cmp eax,'ENDT'
- jne .loop
- lodsd
- and eax,0x00dfdfdf ; Upper case and mask
- cmp eax,'EXT'
- jne .loop
- ; If we get here we hit ENDTEXT
-.eof:
- ret
-
-;
-; Comment line
-;
-pc_comment: ; Fall into pc_getline
-
-;
-; Common subroutine: load line into trackbuf; returns with SI -> trackbuf
-; CF is set on EOF.
-;
-pc_getline: mov di,trackbuf
- push di
- call getline
- mov byte [di],0 ; Null-terminate
- pop si
- ret
-
-;
-; Main loop for configuration file parsing
-;
-parse_config:
- mov di,VKernelBuf ; Clear VKernelBuf at start
- xor ax,ax
- mov cx,vk_size
- rep stosb
-
-.again:
- call getcommand ; Parse one command
- jnc .again ; If not EOF...
- call close
- dec word [IncludeLevel] ; Still parsing?
- jnz .again
-
- ;
- ; The fall through to commit_vk to commit any final
- ; VKernel being read
- ;
-;
-; commit_vk: Store the current VKernelBuf into buffer segment
-;
-commit_vk:
- cmp byte [VKernel],0
- jz .nolabel ; Nothing to commit...
-
- mov di,VKernelBuf+vk_append
- add di,[VKernelBuf+vk_appendlen]
-
- ; If we have an initrd statement, append it to the
- ; append statement
- cmp byte [InitRD+NULLOFFSET],NULLFILE
- je .noinitrd
-
- mov si,str_initrd
- mov cx,7 ; "initrd="
- rep movsb
- mov si,InitRD
- call strcpy
- mov byte [es:di-1],' '
-
- ; For better compression, clean up the append field
-.noinitrd:
- mov ax,di
- sub ax,VKernelBuf+vk_append
- mov [VKernelBuf+vk_appendlen],ax
- mov cx,max_cmd_len+1
- sub cx,ax
- xor ax,ax
- rep stosb
-
- ; Pack into high memory
- mov esi,VKernelBuf
- mov edi,[VKernelEnd]
- mov ecx,vk_size
- pm_call rllpack
- mov [VKernelEnd],edi
-.nolabel:
- ret
-.overflow:
- mov si,vk_overflow_msg
- call writestr
- ret
-
- section .data16
-vk_overflow_msg db 'Out of memory parsing config file', CR, LF, 0
-SerialNotice db 1 ; Only print this once
-
- section .bss16
- 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
- alignz 4
-KbdTimeout dd 0 ; Keyboard timeout (if any)
-TotalTimeout dd 0 ; Total timeout (if any)
-AppendLen dw 0 ; Bytes in append= command
-OntimeoutLen dw 0 ; Bytes in ontimeout command
-OnerrorLen dw 0 ; Bytes in onerror command
-CmdLinePtr dw cmd_line_here ; Command line advancing pointer
-ForcePrompt dw 0 ; Force prompt
-NoEscape dw 0 ; No escape
-NoComplete dw 0 ; No label completion on TAB key
-AllowImplicit dw 1 ; Allow implicit kernels
-AllowOptions dw 1 ; User-specified options allowed
-IncludeLevel dw 1 ; Nesting level
-DefaultLevel dw 0 ; The current level of default
- global PXERetry
-PXERetry dw 0 ; Extra PXE retries
-VKernel db 0 ; Have we seen any "label" statements?
-
-%if IS_PXELINUX
-IPAppend db 0 ; Default IPAPPEND option
-%endif
-
- section .uibss
- 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