I don't see where ax gets set to 0. Does the comment need to be updated, or do you want all the segments set to ax?
+ /* initialize registers for option rom lcall */ + movl __registers + 0, %eax + movl __registers + 4, %ebx + movl __registers + 8, %ecx + movl __registers + 12, %edx + movl __registers + 16, %esi + movl __registers + 20, %edi + /* Set all segments to 0x0000, ds to 0x0040 */ + push %ax mov %ax, %es mov %ax, %fs mov %ax, %gs mov $0x40, %ax mov %ax, %ds + pop %ax
Maybe you want a
mov $0, %ax
right after the push %ax?
Thanks, Myles