On Mon, Sep 11, 2017 at 01:18:16PM +0200, Gerd Hoffmann wrote: [...] > --- a/src/romlayout.S > +++ b/src/romlayout.S > @@ -434,7 +434,7 @@ entry_sercon: > pushl $1f > retl > 1: cmpl %esp, %eax > - jne 4f > + jne 5f > cmpb $0, sercon_enable // Test that sercon is enabled > je 3f > > @@ -449,15 +449,17 @@ entry_sercon: > > // sercon disabled - verify not 0x03 modeset and otherwise exit > 3: popl %eax > + cmpw $0x0007, %ax > + je 4f > cmpw $0x0003, %ax > - jne 5f > - pushl %eax > + jg 6f > +4: pushl %eax > jmp 2b > > // Running on broken x86emu - restore stack and exit > -4: movl %eax, %esp > +5: movl %eax, %esp > popl %eax > -5: popw %ds > +6: popw %ds > iretw
The asm could be simplified a bit: // Serial console "hooked vga" entry point DECLFUNC entry_sercon entry_sercon: // Setup for chain loading to real vga handler pushfw pushl %cs:sercon_real_vga_handler // Set %ds to zonelow segment cli cld pushw %ds pushl %eax movl $_zonelow_seg, %eax movl %eax, %ds // Test if the sercon handler can be called movl %esp, %eax // Test for broken x86emu pushl $1f retl 1: cmpl %esp, %eax jne 4f cmpb $0, sercon_enable // Test that sercon is enabled je 3f // Call handle_sercon() popl %eax popw %ds 2: pushl $handle_sercon #if CONFIG_ENTRY_EXTRASTACK jmp irqentry_arg_extrastack #else jmp irqentry_arg #endif // sercon disabled - check for legacy text modeset and otherwise exit 3: popl %eax popw %ds cmpw $0x0007, %ax jle 2b iretw // Running on broken x86emu - restore stack and exit 4: movl %eax, %esp popl %eax popw %ds iretw _______________________________________________ SeaBIOS mailing list SeaBIOS@seabios.org https://mail.coreboot.org/mailman/listinfo/seabios