rllpack: make all pointers 32 bits wide
authorH. Peter Anvin <hpa@zytor.com>
Mon, 27 Apr 2009 22:58:18 +0000 (15:58 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Mon, 27 Apr 2009 22:58:18 +0000 (15:58 -0700)
The messing around with partial pointers for rllpack/rllunpack turned
out to be a source of bugs.  Instead, have all the values be 32 bits
wide, and require the callers to pass them accordingly.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
core/parseconfig.inc
core/rllpack.inc
core/ui.inc

index 962d120..5159a1a 100644 (file)
@@ -433,9 +433,9 @@ commit_vk:
                rep stosb
 
                ; Pack into high memory
-               mov si,VKernelBuf
+               mov esi,VKernelBuf
                mov edi,[VKernelEnd]
-               mov cx,vk_size
+               mov ecx,vk_size
                call rllpack
                mov [VKernelEnd],edi
 .nolabel:
index 717ba6a..c3bca69 100644 (file)
@@ -31,8 +31,8 @@
 
 ;
 ; rllpack:
-;      Pack CX bytes from SI into EDI.
-;      Returns updated (E)SI and EDI.
+;      Pack ECX bytes from ESI into EDI.
+;      Returns updated ESI and EDI.
 ;
 rllpack:
                push word .pmentry
@@ -44,8 +44,6 @@ rllpack:
                push ecx
                push ebx
                push edx
-               movzx ecx,cx
-               movzx esi,si
 .startseq:
                xor eax,eax             ; Zero byte
                xor ebx,ebx             ; Run length zero
@@ -116,9 +114,9 @@ rllpack:
                bits 16
 ;
 ; rllunpack:
-;      Unpack bytes from SI into EDI
-;      On return (E)SI, EDI are updated and
-;      (E)CX contains number of bytes output.
+;      Unpack bytes from ESI into EDI
+;      On return ESI, EDI are updated and
+;      ECX contains number of bytes output.
 ;
 rllunpack:
                push word .pmentry
@@ -128,7 +126,6 @@ rllunpack:
                bits 32
 .pmentry:
                push edi
-               movzx esi,si
                xor ecx,ecx
 .header:
                dec esi
index aa86c56..cb6e03b 100644 (file)
@@ -161,7 +161,7 @@ display_labels:
 
                push cx                         ; save command line size
 
-               mov di,VKernelBuf
+               mov edi,VKernelBuf
                call rllunpack
                ; ESI updated on return
 
@@ -350,7 +350,7 @@ vk_check:
                cmp esi,[VKernelEnd]
                jbe .not_vk
 
-               mov di,VKernelBuf
+               mov edi,VKernelBuf
                call rllunpack
                ; ESI updated on return