[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] compute checksum for roms bigger than a segmen
From: |
malc |
Subject: |
Re: [Qemu-devel] [PATCH] compute checksum for roms bigger than a segment |
Date: |
Tue, 24 Mar 2009 06:14:39 +0300 (MSK) |
On Mon, 23 Mar 2009, Glauber Costa wrote:
> On Mon, Mar 23, 2009 at 9:48 PM, malc <address@hidden> wrote:
> > On Mon, 23 Mar 2009, Glauber Costa wrote:
> >
> >> Some option roms (e1000 provided by gpxe project as an example)
> >> are bigger than a segment. The current algorithm to compute the
> >> checksum fails in such case. To proper compute the checksum, this
> >> patch deals with the possibility of the rom's size crossing a
> >> segment border.
> >>
> >> We don't need to worry about it crossing more than one segment
> >> border, since the option roms format only save one byte to store
> >> the image size (thus, maximum size = 0xff = 128k = 2 segments)
> >>
> >> Signed-off-by: Glauber Costa <address@hidden>
> >> ---
> >> bios/rombios.c | 33 +++++++++++++++++++++++++++------
> >> 1 files changed, 27 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/bios/rombios.c b/bios/rombios.c
> >> index bc43251..6fede17 100644
> >> --- a/bios/rombios.c
> >> +++ b/bios/rombios.c
> >> @@ -10162,22 +10162,43 @@ no_serial:
> >> ret
> >>
> >> rom_checksum:
> >> - push ax
> >> - push bx
> >> - push cx
> >> + pusha
> >> + push ds
> >> +
> >> xor ax, ax
> >> xor bx, bx
> >> xor cx, cx
> >> + xor dx, dx
> >> +
> >> mov ch, [2]
> >> shl cx, #1
> >> +
> >> + jnc checksum_loop
> >> + mov dx, cx
> >> + mov cx, #0xffff
> >
> > xchg dx, cx
> > dec cx
> I actually skipped this one.
>
> Ok for xchg, but cx at this time holds the remaining bytes, so dec cx won't
> have the effect you think it will.
Initially DX = 0, CX = remaining bytes
XCHG CX = 0, DX = remaining bytes
DEC CX = 0FFFFh
Unless i'm really missing something, this yields identical results with
the original code.
--
mailto:address@hidden
[Qemu-devel] [PATCH] compute checksum for roms bigger than a segment, Glauber Costa, 2009/03/25