[llvmlinux] [PATCH 3/4] x86: Allow building 16-bit code with -m16 with toolchains that support it

Jan-Simon Möller jsmoeller at linuxfoundation.org
Tue Jan 14 19:38:20 UTC 2014


Cool , tnx!

-- 

Sincerely yours,

Jan-Simon Möller

jsmoeller at linuxfoundation.org
Am Dienstag, 14. Januar 2014, 19:18:35 schrieb David Woodhouse:
> Head. With a trivial patch to add -m16 support, that I think I need to
> update since someone changed that code in clang this week. Will send new
> patch in a few hours when I get home.
> 
> And llvm from git://git.infradead.org/~dwmw2/llvm.git for the 16-bit
> support.
> 
> -- 
> dwmw2
> (Apologies for HTML and top-posting; Android mailer is broken.)
> 
> -------- Original message --------
> From: Jan-Simon Möller <dl9pf at gmx.de>
> Date:14/01/2014  19:14  (GMT+00:00)
> To: llvmlinux at lists.linuxfoundation.org
> Cc: x86 at kernel.org,David Woodhouse
> <David.Woodhouse at intel.com>,	linux-kernel at vger.kernel.org Subject: Re:
> [llvmlinux] [PATCH 3/4] x86: Allow building 16-bit code with
 	-m16 with
> toolchains that support it
> 
> Hi David,
> 
> what version of clang did you use btw ?
> 
> > I have this working with LLVM/Clang, and a PR is filed for GCC because
> > the current hacks we have to do to *try* to ensure that .code16gcc is
> > the first thing in the asm output are horrid.
> > 
> > Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
> > ---
> >
> >  arch/x86/Makefile | 15 +++++++++++----
> >  1 file changed, 11 insertions(+), 4 deletions(-)
> >
> > diff --git a/arch/x86/Makefile b/arch/x86/Makefile
> > index ef19271..60fc67d 100644
> > --- a/arch/x86/Makefile
> > +++ b/arch/x86/Makefile
> > @@ -13,14 +13,21 @@ endif
> >
> >  # How to compile the 16-bit code.  Note we always compile for
> >-march=i386; # that way we can complain to the user if the CPU is
> >insufficient.>
> > -REALMODE_CFLAGS	:= -m32 -g -Os -D__KERNEL__ -DDISABLE_BRANCH_PROFILING \
> > +#
> > +# We really want GCC to have a -m16 option like clang, so that we don't
> > +# have to play these evil and unreliable tricks to ensure that our
> > +# asm(".code16gcc") is first in the asm output.
> > http://gcc.gnu.org/PR59672
> > +CODE16GCC_CFLAGS := -m32 -include $(srctree)/arch/x86/boot/code16gcc.h \
> > +	     $(call cc-option, -fno-toplevel-reorder,\
> > +	       $(call cc-option, -fno-unit-at-a-time))
> > +M16_CFLAGS	 := -m16
> > +
> > +REALMODE_CFLAGS	:= -g -Os -D__KERNEL__ -DDISABLE_BRANCH_PROFILING \
> > +	    $(call cc-option, $(M16_CFLAGS), $(CODE16GCC_CFLAGS)) \
> >
> >     -Wall -Wstrict-prototypes -march=i386 -mregparm=3 \
> >
> > -	    -include $(srctree)/arch/x86/boot/code16gcc.h \
> >
> >     -fno-strict-aliasing -fomit-frame-pointer -fno-pic \
> >     -mno-mmx -mno-sse \
> >     $(call cc-option, -ffreestanding) \
> >
> > -	    $(call cc-option, -fno-toplevel-reorder,\
> > -	    $(call cc-option, -fno-unit-at-a-time)) \
> >
> >     $(call cc-option, -fno-stack-protector) \
> >     $(call cc-option, -mpreferred-stack-boundary=2)
> >  export REALMODE_CFLAGS
> 
> _______________________________________________
> LLVMLinux mailing list
> LLVMLinux at lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/llvmlinux



More information about the LLVMLinux mailing list