diff options
-rw-r--r-- | bcopy32.inc | 10 | ||||
-rw-r--r-- | comboot.inc | 3 | ||||
-rw-r--r-- | extlinux.asm | 2 | ||||
-rw-r--r-- | isolinux.asm | 2 | ||||
-rw-r--r-- | ldlinux.asm | 3 | ||||
-rw-r--r-- | pxelinux.asm | 26 |
6 files changed, 24 insertions, 22 deletions
diff --git a/bcopy32.inc b/bcopy32.inc index 9931f101..7d049b73 100644 --- a/bcopy32.inc +++ b/bcopy32.inc @@ -407,10 +407,16 @@ A20DList dw a20d_dunno, a20d_none, a20d_bios, a20d_kbc, a20d_fast a20_adjust_cnt equ ($-A20List)/2 A20Type dw A20_NONE ; A20 type -A20Test dw 0 ; Counter for testing status of A20 -A20Tries db 0 ; Times until giving up on A20 ; Total size of .bcopy32 section alignb 4, db 0 ; Even number of dwords __bcopy_size equ $-__bcopy_start + section .earlybss + alignb 2 +SavedSSSP resd 1 ; Saved real mode SS:SP +A20Test resw 1 ; Counter for testing status of A20 +A20Tries resb 1 ; Times until giving up on A20 + + + diff --git a/comboot.inc b/comboot.inc index 6e11a2aa..45233a84 100644 --- a/comboot.inc +++ b/comboot.inc @@ -580,9 +580,6 @@ numIPAppends equ ($-IPAppends)/2 comapi_ipappend equ comapi_err %endif - section .bss -SavedSSSP resd 1 ; Our SS:SP while running a COMBOOT image - section .data %macro int21 2 db %1 diff --git a/extlinux.asm b/extlinux.asm index dac3393f..9577d310 100644 --- a/extlinux.asm +++ b/extlinux.asm @@ -1449,5 +1449,3 @@ EndOfGetCBuf dw getcbuf+trackbufsize ; = getcbuf+BufSafeBytes %error trackbufsize must be a multiple of SECTOR_SIZE %endif %endif - align 4, db 0 ; Pad out any unfinished dword -ldlinux_end equ $ diff --git a/isolinux.asm b/isolinux.asm index 4a3af1de..c1d50f3b 100644 --- a/isolinux.asm +++ b/isolinux.asm @@ -1630,5 +1630,3 @@ EndOfGetCBuf dw getcbuf+trackbufsize ; = getcbuf+BufSafeBytes %error trackbufsize must be a multiple of SECTOR_SIZE %endif %endif - -ldlinux_end equ $ diff --git a/ldlinux.asm b/ldlinux.asm index e528adb4..71428fb9 100644 --- a/ldlinux.asm +++ b/ldlinux.asm @@ -1533,6 +1533,3 @@ EndOfGetCBuf dw getcbuf+trackbufsize ; = getcbuf+BufSafeBytes %error trackbufsize must be a multiple of SECTOR_SIZE %endif %endif - - align 4, db 0 ; Pad out any unfinished dword -ldlinux_end equ $ diff --git a/pxelinux.asm b/pxelinux.asm index 5dde97b0..038680c4 100644 --- a/pxelinux.asm +++ b/pxelinux.asm @@ -273,9 +273,12 @@ _start: mov ds,ax mov es,ax - mov si,ldlinux_end-(TEXT_START-7C00h)-4 - mov di,ldlinux_end-4 - mov cx,ldlinux_end-TEXT_START + ; This is uglier than it should be, but works around + ; some NASM 0.98.38 bugs. + mov di,section..bcopy32.start + add di,__bcopy_size-4 + lea si,[di-(TEXT_START-7C00h)] + lea cx,[di-(TEXT_START-4)] shr cx,2 std ; Overlapping areas, copy backwards rep movsd @@ -1482,15 +1485,17 @@ parse_dotquad: mangle_name: push si mov eax,[ServerIP] + cmp byte [si],0 + je .noip ; Null filename?!?! cmp word [si],'::' ; Leading ::? je .gotprefix .more: - cmp word [si],'::' - je .here + inc si cmp byte [si],0 + je .noip + cmp word [si],'::' jne .more - jmp .noip ; We have a :: prefix of some sort, it could be either ; a DNS name or a dot-quad IP address. Try the dot-quad @@ -1503,9 +1508,13 @@ mangle_name: cmp word [si],'::' je .gotprefix .notdq: + pop si + push si call dns_resolv cmp word [si],'::' - je .gotprefix + jne .noip + and eax,eax + jnz .gotprefix .noip: pop si @@ -1531,7 +1540,6 @@ mangle_name: inc cx ; At least one null byte xor ax,ax ; Zero-fill name rep stosb ; Doesn't do anything if CX=0 - pop bx ret ; Done ; @@ -2568,5 +2576,3 @@ EndOfGetCBuf dw getcbuf+trackbufsize ; = getcbuf+BufSafeBytes %endif IPAppend db 0 ; Default IPAPPEND option DHCPMagic db 0 ; DHCP site-specific option info - -ldlinux_end equ $ |