--- linux-2.6.18-rc4-mm2/arch/i386/boot/edd.S 2006-06-18 04:49:35.000000000 +0300 +++ linux-2.6.18-rc4-mm2.new/arch/i386/boot/edd.S 2006-08-28 23:21:01.000000000 +0300 @@ -22,14 +22,16 @@ # edd=of disables EDD completely (edd=off) # edd=sk skips the MBR test (edd=skipmbr) pushl %esi - cmpl $0, %cs:cmd_line_ptr - jz done_cl movl %cs:(cmd_line_ptr), %esi + andl %esi, %esi + jz done_cl # ds:esi has the pointer to the command line now - movl $(COMMAND_LINE_SIZE-7), %ecx + movw $(COMMAND_LINE_SIZE-7), %cx # loop through kernel command line one byte at a time cl_loop: - cmpl $EDD_CL_EQUALS, (%si) + cmpb $0, (%esi) + jz done_cl + cmpl $EDD_CL_EQUALS, (%esi) jz found_edd_equals incl %esi loop cl_loop @@ -37,9 +39,9 @@ cl_loop: found_edd_equals: # only looking at first two characters after equals addl $4, %esi - cmpw $EDD_CL_OFF, (%si) # edd=of + cmpw $EDD_CL_OFF, (%esi) # edd=of jz do_edd_off - cmpw $EDD_CL_SKIP, (%si) # edd=sk + cmpw $EDD_CL_SKIP, (%esi) # edd=sk jz do_edd_skipmbr jmp done_cl do_edd_skipmbr: