packages: syslinux/01_isolinux_mount_chdir.diff (NEW), syslinux/02_comboot_...
shadzik
shadzik at pld-linux.org
Thu Jun 24 14:32:32 CEST 2010
Author: shadzik Date: Thu Jun 24 12:32:32 2010 GMT
Module: packages Tag: HEAD
---- Log message:
- add gfxboot support
---- Files affected:
packages/syslinux:
01_isolinux_mount_chdir.diff (NONE -> 1.1) (NEW), 02_comboot_new_api.diff (NONE -> 1.1) (NEW), 03_doc.diff (NONE -> 1.1) (NEW), 04_no_gfxboot_com.diff (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: packages/syslinux/01_isolinux_mount_chdir.diff
diff -u /dev/null packages/syslinux/01_isolinux_mount_chdir.diff:1.1
--- /dev/null Thu Jun 24 14:32:32 2010
+++ packages/syslinux/01_isolinux_mount_chdir.diff Thu Jun 24 14:32:27 2010
@@ -0,0 +1,175 @@
+diff --git a/core/isolinux.asm b/core/isolinux.asm
+index 23429bd..54f2e19 100644
+--- a/core/isolinux.asm
++++ b/core/isolinux.asm
+@@ -1135,73 +1135,23 @@ all_read:
+ ; (which will be at 16 only for a single-session disk!); from the PVD
+ ; we should be able to find the rest of what we need to know.
+ ;
+-get_fs_structures:
+- mov eax,[bi_pvd]
+- mov bx,trackbuf
+- call getonesec
+-
+- mov eax,[trackbuf+156+2]
+- mov [RootDir+dir_lba],eax
+- mov [CurrentDir+dir_lba],eax
+-%ifdef DEBUG_MESSAGES
+- mov si,dbg_rootdir_msg
+- call writemsg
+- call writehex8
+- call crlf
+-%endif
+- mov eax,[trackbuf+156+10]
+- mov [RootDir+dir_len],eax
+- mov [CurrentDir+dir_len],eax
+- add eax,SECTOR_SIZE-1
+- shr eax,SECTOR_SHIFT
+- mov [RootDir+dir_clust],eax
+- mov [CurrentDir+dir_clust],eax
+-
+- ; Look for an isolinux directory, and if found,
+- ; make it the current directory instead of the root
+- ; directory.
+- ; Also copy the name of the directory to CurrentDirName
+- mov word [CurrentDirName],ROOT_DIR_WORD ; Write '/',0 to the CurrentDirName
++ call iso_mount
+ mov di,boot_dir ; Search for /boot/isolinux
+- mov al,02h
+- push di
+- call searchdir_iso
+- pop di
+- jnz .found_dir
+- mov di,isolinux_dir
+- mov al,02h ; Search for /isolinux
+- push di
+- call searchdir_iso
+- pop di
+- jz .no_isolinux_dir
++ call setcwd
++ jnc .found_dir
++ mov di,isolinux_dir ; Search for /isolinux
++ call setcwd
+ .found_dir:
+- ; Copy current directory name to CurrentDirName
+- push si
+- push di
+- mov si,di
+- mov di,CurrentDirName
+- call strcpy
+- mov byte [di],0 ;done in case it's not word aligned
+- dec di
+- mov byte [di],'/'
+- pop di
+- pop si
+
+- mov [CurrentDir+dir_len],eax
+- mov eax,[si+file_left]
+- mov [CurrentDir+dir_clust],eax
+- xor eax,eax ; Free this file pointer entry
+- xchg eax,[si+file_sector]
+- mov [CurrentDir+dir_lba],eax
+ %ifdef DEBUG_MESSAGES
+ push si
+ mov si,dbg_isodir_msg
+ call writemsg
+ pop si
++ mov eax,[CurrentDir+dir_lba]
+ call writehex8
+ call crlf
+ %endif
+-.no_isolinux_dir:
+
+ ;
+ ; Locate the configuration file
+@@ -1706,6 +1656,90 @@ getfssec:
+ TRACER 'f'
+ ret
+
++;
++; setcwd: Set current working directory.
++;
++; On entry:
++; DI -> directory name
++; On exit:
++; CF = 1 -> error
++;
++; On error, the old working directory is kept.
++;
++setcwd:
++ mov al,02h
++ push di
++ call searchdir_iso
++ pop di
++ stc
++ jz .err
++ mov [CurrentDir+dir_len],eax
++ mov eax,[si+file_left]
++ mov [CurrentDir+dir_clust],eax
++ xor eax,eax
++ xchg eax,[si+file_sector]
++ mov [CurrentDir+dir_lba],eax
++ mov si,di
++ mov di,CurrentDirName
++ cmp si,di
++ jz .ok
++ mov cx,FILENAME_MAX
++ push ds
++ pop es
++.copy:
++ lodsb
++ stosb
++ or al,al
++ loopnz .copy
++ mov byte [di-1],0
++ jnz .err
++.ok:
++ clc
++.err:
++ ret
++
++;
++; Read fs meta data and setup RootDir and CurrentDir.
++;
++; On exit:
++; CF = 1 -> error
++;
++iso_mount:
++ mov eax,[bi_pvd]
++ mov bx,trackbuf
++ call getonesec
++
++ mov eax,[trackbuf+156+10]
++ mov [RootDir+dir_len],eax
++ add eax,SECTOR_SIZE-1
++ shr eax,SECTOR_SHIFT
++ mov [RootDir+dir_clust],eax
++ mov eax,[trackbuf+156+2]
++ mov [RootDir+dir_lba],eax
++
++ push ds
++ pop es
++ mov si,RootDir
++ mov di,CurrentDir
++ mov cx,dir_t_size
++ rep movsb
++
++%ifdef DEBUG_MESSAGES
++ mov si,dbg_rootdir_msg
++ call writemsg
++ call writehex8
++ call crlf
++%endif
++
++ mov di,CurrentDirName
++ call setcwd
++ jnc .ok
++ mov word [CurrentDirName],ROOT_DIR_WORD
++.ok:
++ clc
++ ret
++
++
+ ; -----------------------------------------------------------------------------
+ ; Common modules
+ ; -----------------------------------------------------------------------------
================================================================
Index: packages/syslinux/02_comboot_new_api.diff
diff -u /dev/null packages/syslinux/02_comboot_new_api.diff:1.1
--- /dev/null Thu Jun 24 14:32:32 2010
+++ packages/syslinux/02_comboot_new_api.diff Thu Jun 24 14:32:27 2010
@@ -0,0 +1,70 @@
+diff --git a/core/comboot.inc b/core/comboot.inc
+index f8a7853..37bd0f2 100644
+--- a/core/comboot.inc
++++ b/core/comboot.inc
+@@ -970,6 +970,45 @@ comapi_shufraw:
+ mov ecx,P_ECX
+ jmp shuffle_and_boot_raw
+
++
++;
++; INT 22h AX=0025h Set current working directory
++;
++%if IS_ISOLINUX
++comapi_setcwd:
++ mov si,P_BX
++ mov di,TmpDirName
++ mov cx,FILENAME_MAX
++ mov ds,P_ES
++.copy:
++ lodsb
++ stosb
++ or al,al
++ loopnz .copy
++ push cs
++ pop ds
++ stc
++ jnz .err
++ mov di,TmpDirName
++ call setcwd
++.err:
++ ret
++%else
++comapi_setcwd equ comapi_err
++%endif
++
++
++;
++; INT 22h AX=0026h Read filesystem meta data
++;
++%if IS_ISOLINUX
++comapi_mount:
++; call iso_mount
++ ret
++%else
++comapi_mount equ comapi_err
++%endif
++
+ section .data
+
+ %macro int21 2
+@@ -1029,6 +1068,8 @@ int22_table:
+ dw comapi_closedir ; 0022 close directory
+ dw comapi_shufsize ; 0023 query shuffler size
+ dw comapi_shufraw ; 0024 cleanup, shuffle and boot raw
++ dw comapi_setcwd ; 0025 set current working directory
++ dw comapi_mount ; 0026 read fs structures (aka mount)
+ int22_count equ ($-int22_table)/2
+
+ APIKeyWait db 0
+@@ -1049,8 +1090,9 @@ feature_flags_len equ ($-feature_flags)
+ err_notdos db ': attempted DOS system call INT ',0
+ err_comlarge db 'COMBOOT image too large.', CR, LF, 0
+
+- section .bss1
++ section .bss2
+ alignb 4
+ DOSErrTramp resd 33 ; Error trampolines
++TmpDirName resb FILENAME_MAX
+ ConfigName resb FILENAME_MAX
+ CurrentDirName resb FILENAME_MAX
================================================================
Index: packages/syslinux/03_doc.diff
diff -u /dev/null packages/syslinux/03_doc.diff:1.1
--- /dev/null Thu Jun 24 14:32:32 2010
+++ packages/syslinux/03_doc.diff Thu Jun 24 14:32:27 2010
@@ -0,0 +1,25 @@
+diff --git a/doc/comboot.txt b/doc/comboot.txt
+index eb43708..13d18f6 100644
+--- a/doc/comboot.txt
++++ b/doc/comboot.txt
+@@ -949,3 +949,20 @@ AX=0024h [3.80] Cleanup, shuffle and boot, raw version
+ with read/write data segments, matching the respective code
+ segment. For mode 0, B=0 and the limits will be 64K, for mode
+ 1, B=1 and the limits will be 4 GB.
++
++
++AX=0025h [3.84] Set current working directory
++ Input: AX 00025h
++ ES:BX null-terminated directory name string
++ Output: None
++
++ Sets the current working directory. For SYSLINUX, ISOLINUX,
++ and PXELINUX, this will be an absolute path.
++
++
++AX=0026h [3.84] Read file system metadata [ISOLINUX]
++ Input: AX 00026h
++ Output: None
++
++ Reads filesystem data (e.g. after a CDROM change).
++
================================================================
Index: packages/syslinux/04_no_gfxboot_com.diff
diff -u /dev/null packages/syslinux/04_no_gfxboot_com.diff:1.1
--- /dev/null Thu Jun 24 14:32:32 2010
+++ packages/syslinux/04_no_gfxboot_com.diff Thu Jun 24 14:32:27 2010
@@ -0,0 +1,13 @@
+diff --git a/modules/Makefile b/modules/Makefile
+index 77020ea..f318364 100644
+--- a/modules/Makefile
++++ b/modules/Makefile
+@@ -19,7 +19,7 @@ include $(topdir)/MCONFIG.embedded
+
+ INCLUDES = -I$(com32)/include
+
+-BINS = pxechain.com gfxboot.com poweroff.com int18.com
++BINS = pxechain.com poweroff.com int18.com
+
+ all: $(BINS)
+
================================================================
More information about the pld-cvs-commit
mailing list