[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: |
Glauber Costa |
Subject: |
Re: [Qemu-devel] [PATCH] compute checksum for roms bigger than a segment |
Date: |
Mon, 23 Mar 2009 22:53:40 -0300 |
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.
--
Glauber Costa.
"Free as in Freedom"
http://glommer.net
"The less confident you are, the more serious you have to act."
[Qemu-devel] [PATCH] compute checksum for roms bigger than a segment, Glauber Costa, 2009/03/25