diff options
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | cache.inc | 2 | ||||
-rw-r--r-- | ldlinux.asm | 10 | ||||
-rw-r--r-- | version | 2 | ||||
-rw-r--r-- | writehex.inc | 1 | ||||
-rw-r--r-- | writestr.inc | 9 |
6 files changed, 20 insertions, 7 deletions
@@ -2,6 +2,9 @@ Starting with 1.47, changes marked with SYSLINUX/PXELINUX/ISOLINUX apply to that specific program only; other changes apply to all of them. +Changes in 3.08: + * SYSLINUX: Fix performance regression (-s mode always enabled.) + Changes in 3.07: * Fix chainloading (chain.c32). * Fix zlib build problem. @@ -43,6 +43,7 @@ getcachesector: loop .search .miss: + TRACER 'M' ; Need to load it. Highly inefficient cache replacement ; algorithm: Least Recently Written (LRW) push bx @@ -66,6 +67,7 @@ getcachesector: ret .hit: ; We have it; get the pointer + TRACER 'H' sub si,CachePtrs shl si,SECTOR_SHIFT-2 pop cx diff --git a/ldlinux.asm b/ldlinux.asm index 77e3e982..baa7cca3 100644 --- a/ldlinux.asm +++ b/ldlinux.asm @@ -1208,6 +1208,7 @@ getfssec_edx: push eax .getfragment: xor ebp,ebp ; Fragment sector count + push edx ; Starting sector pointer .getseccnt: inc bp dec cx @@ -1215,19 +1216,20 @@ getfssec_edx: xor eax,eax mov ax,es shl ax,4 - add ax,bx ; Now DI = how far into 64K block we are + add ax,bx ; Now AX = how far into 64K block we are not ax ; Bytes left in 64K block inc eax shr eax,SECTOR_SHIFT ; Sectors left in 64K block cmp bp,ax jnb .do_read ; Unless there is at least 1 more sector room... - lea eax,[edx+1] ; Linearly next sector + mov eax,edx ; Current sector + inc edx ; Predict it's the linearly next sector call nextsector jc .do_read - cmp edx,eax + cmp edx,eax ; Did it match? jz .getseccnt .do_read: - mov eax,edx + pop eax ; Starting sector pointer call getlinsecsr lea eax,[eax+ebp-1] ; This is the last sector actually read shl bp,9 @@ -1 +1 @@ -3.07 +3.08 diff --git a/writehex.inc b/writehex.inc index bcb7868d..f99f8306 100644 --- a/writehex.inc +++ b/writehex.inc @@ -17,6 +17,7 @@ ;; Write hexadecimal numbers to the console ;; + section .text ; ; writehex[248]: Write a hex number in (AL, AX, EAX) to the console ; diff --git a/writestr.inc b/writestr.inc index 4bfbe24b..46d2aa14 100644 --- a/writestr.inc +++ b/writestr.inc @@ -21,8 +21,13 @@ ; ; crlf: Print a newline ; -crlf: mov si,crlf_msg - ; Fall through +crlf: push ax + mov al,CR + call writechr + mov al,LF + call writechr + pop ax + ret ; ; cwritestr: write a null-terminated string to the console, saving |