%ebx is set to 0 when the last e820 record is returned, which means
that %bp was not incremented for the last record; this change moves
the increment of %bp to earlier in the function, before %ebx is
tested, and after the magic number returned by e820 is checked, so
that %bp is incremented once for every entry.
Also move the test for %ecx=0 (meaning the entry should be skipped)
for correctness. It doesn't look like qemu ever actually sets %ecx to
0 in practice though.
cmp %edx, %eax
jne .e820f
+ jcxz .skipent
+ inc %bp
test %ebx, %ebx
je .e820f
- jcxz .skipent
cmp $20, %cl
- inc %bp
add $24, %di
.skipent:
test %ebx, %ebx