[SeaBIOS] [PATCH 1/3] vgabios: Add config option for assembler fixups

Paul Menzel paulepanter at users.sourceforge.net
Sat Apr 11 08:58:20 CEST 2015


Dear Kevin,


Am Freitag, den 10.04.2015, 11:07 -0400 schrieb Kevin O'Connor:
> Add a kconfig build option (CONFIG_VGA_FIXUP_ASM) to allow users to
> build the vgabios without the complex assembler fixups that work
> around emulator bugs.
> 
> Signed-off-by: Kevin O'Connor <kevin at koconnor.net>
> ---
>  Makefile          | 21 +++++++++++----------
>  vgasrc/Kconfig    | 10 ++++++++++
>  vgasrc/vgaentry.S |  4 ++++
>  3 files changed, 25 insertions(+), 10 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index a84a5f7..a4d945c 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -56,7 +56,7 @@ COMMONCFLAGS := -I$(OUT) -Isrc -Os -MD -g \
>      -Wall -Wno-strict-aliasing -Wold-style-definition \
>      $(call cc-option,$(CC),-Wtype-limits,) \
>      -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 \
> -    -minline-all-stringops \
> +    -minline-all-stringops -fomit-frame-pointer \

could you elaborate why `-fomit-frame-pointer` causes issues and needs
to be moved around?

>      -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks \
>      -ffunction-sections -fdata-sections -fno-common -fno-merge-constants
>  COMMONCFLAGS += $(call cc-option,$(CC),-nopie,)
> @@ -64,15 +64,14 @@ COMMONCFLAGS += $(call cc-option,$(CC),-fno-stack-protector,)
>  COMMONCFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,)
>  COMMA := ,
>  
> -CFLAGS32FLAT := $(COMMONCFLAGS) -DMODE16=0 -DMODESEGMENT=0 -fomit-frame-pointer
> +CFLAGS32FLAT := $(COMMONCFLAGS) -DMODE16=0 -DMODESEGMENT=0
>  CFLAGSSEG := $(COMMONCFLAGS) -DMODESEGMENT=1 -fno-defer-pop \
>      $(call cc-option,$(CC),-fno-jump-tables,-DMANUAL_NO_JUMP_TABLE) \
>      $(call cc-option,$(CC),-fno-tree-switch-conversion,)
> -CFLAGS32SEG := $(CFLAGSSEG) -DMODE16=0 -fomit-frame-pointer
> -CFLAGS16INC := $(CFLAGSSEG) -DMODE16=1 \
> +CFLAGS32SEG := $(CFLAGSSEG) -DMODE16=0
> +CFLAGS16 := $(CFLAGSSEG) -DMODE16=1 \
>      $(call cc-option,$(CC),-m16,-Wa$(COMMA)src/code16gcc.s) \
>      $(call cc-option,$(CC),--param large-stack-frame=4,-fno-inline)
> -CFLAGS16 := $(CFLAGS16INC) -fomit-frame-pointer

[…]
 
> +    config VGA_FIXUP_ASM
> +        bool "Fixup assembler to work with broken emulators"
> +        default y
> +        help
> +            This option will cause the build to attempt to avoid
> +            certain x86 machine instructions that are known to confuse
> +            some emulators.  In particular, it works around
> +            deficiencies in the Windows vgabios emulator and the

Use Microsoft Windows?

> +            x86emu vgabios emulator (frequently used in Xorg).
> +
>      config VGA_ALLOCATE_EXTRA_STACK
>          depends on BUILD_VGABIOS
>          bool "Allocate an internal stack for 16bit interrupt entry point"

[…]


Thanks,

Paul
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: This is a digitally signed message part
URL: <http://www.seabios.org/pipermail/seabios/attachments/20150411/77d1e5ee/attachment-0001.asc>


More information about the SeaBIOS mailing list