Call for help: clang/llvm for sparc64

Roman Divacky rdivacky at freebsd.org
Mon Jan 27 21:54:04 UTC 2014


On Mon, Jan 27, 2014 at 09:50:52PM +0000, Craig Butler wrote:
> 
> 
> > Btw, can someone test this patch? ie. compile (with gcc) sparc64
> > kernel
> > with it and boot it?
> > 
> > > Yes, I had to fix that but forgot to upstream it.
> > > 
> > > Index: sparc64/include/pcpu.h
> > > ===================================================================
> > > --- sparc64/include/pcpu.h      (revision 259767)
> > > +++ sparc64/include/pcpu.h      (working copy)
> > > @@ -70,9 +70,26 @@
> > >  struct pcb;
> > >  struct pcpu;
> > >  
> > > -register struct pcb *curpcb __asm__(__XSTRING(PCB_REG));
> > > -register struct pcpu *pcpup __asm__(__XSTRING(PCPU_REG));
> > > +static __inline __pure2 struct pcb *
> > > +__curpcb(void)
> > > +{
> > > +       struct pcb *pcb;
> > >  
> > > +       __asm("ldx [%" __XSTRING(PCB_REG) "], %0" : "=r" (pcb));
> > > +       return (pcb);
> > > +}
> > > +#define curpcb (__curpcb())
> > > +
> > > +static __inline __pure2 struct pcpu *
> > > +__curpcpu(void)
> > > +{
> > > +       struct pcpu *pcpu;
> > > +
> > > +       __asm("ldx [%" __XSTRING(PCPU_REG) "], %0" : "=r" (pcpu));
> > > +       return (pcpu);
> > > +}
> > > +#define pcpup  (__curpcpu())
> > > +
> > >  #define        PCPU_GET(member)        (pcpup->pc_ ## member)
> > >  
> > >  static __inline __pure2 struct thread *
> > > 
> > > 
> > > the llvm sparc64 is not yet ready for wide consumption. Once llvm
> > > 3.4 is imported
> > > (days now) the sparc64 backend will be enabled as well. Then I plan
> > > to backport
> > > all the fixes from llvm trunk to enable it to selfhost. So that we
> > > can build
> > > llvm 3.5 with llvm itself. This is necesary as llvm is becoming
> > > c++11 only.
> > > 
> 
> Do you want us to apply that patch to /usr/src/sys/sparc64/include/pcpu.h then make with gcc ??
> Do we have to pull down HEAD or can this be applied over a 9.2|10-RELEASE ?
> Which gcc ??

-current and in-base gcc I would think would be the best. But 10.0R should work
too.

Roman


More information about the freebsd-sparc64 mailing list