compiling cont.

Joel Sherrill joel.sherrill at OARcorp.com
Mon Oct 23 13:23:15 UTC 2000


russ wrote:
> 
> This has now been resolved (thanks again Joel!). Removing the
> soft-float flag fixed everything.
> 
> Now my next question, has much changed in the system configuration
> process from 4.0 to 4.5? I've read the "Configuring a system using the
> template confdefs.h" README and think I've gotten everything.

Some things have changed but mostly to be more accurate and minimize
the resources allocated.  For example, the default number of 
RTEMS tasks and POSIX threads in 4.0 was 10.  It it now 0.  The 
default number of file descriptors was 20 -- now it is 3 (stdin, out,
and
error).  

> But my Init task isn't being called. I get into
> _Thread_Start_multitasking and when the first _Context_Switch is
> called, it crashes.

This is a BSP problem.  This is the first point interrupts are enabled.
 
> Thanks
> russ
> 
> Joel Sherrill wrote:
> >
> > I don't know if this is resolved or not.  First __umodsi3 should be
> > coming from the RPMs.  It looks like you are not linking against the
> > correct multilib version.  Try adding a -Map to the link arguments
> > and seeing where it comes from.
> >
> > russ wrote:
> > >
> > > Hi,
> > >
> > > I found that I can narrow the problem down to this:
> > >
> > > c code: long1 = long2 % long3;  -> crashes
> > > asm:    jsr __umodsi3
> > >
> > > c code: short1 = short2 % short3; -> works
> > > asm:    divu.w 14(%sp),%d0
> > >
> > > My question is, would __umodsi3 be a function in the pre-built
> > > libraries I downloaded in RPM form and if so, how would I know if the
> > > rpm library was compiled with the m68000 flag or the m68020 flag?
> > >
> > > Thanks
> > > russ
> > >
> > > Charles-Antoine Gauthier wrote:
> > > >
> > > > russ wrote:
> > > > >
> > > > > Hi,
> > > > >
> > > > > This is a better example of my problem. This is the output when I compile a single file from the
> > > > > command line:
> > > > >
> > > > > russ > m68k-rtems-gcc -v -I/opt/rtems/bare-m68302/lib/include heapallocate.c
> > > > > Reading specs from /opt/rtems/lib/gcc-lib/m68k-rtems/2.95.2/specs
> > > > > gcc version 2.95.2 19991024 (release)
> > > > >  /opt/rtems/lib/gcc-lib/m68k-rtems/2.95.2/cpp -lang-c -v -I/opt/rtems/bare-m68302/lib/include
> > > > > -D__GNUC__=2 -D__GNUC_MINOR__=95 -Dmc68000 -Drtems -D__rtems__ -D__ELF__ -D__mc68000__ -D__rtems__
> > > > > -D__rtems__ -D__ELF__ -D__mc68000 -D__rtems -Asystem(rtems) -Acpu(mc68000) -Acpu(m68k)
> > > > > -Amachine(m68k) -Dmc68000 -D__mc68000 -D__mc68000__ heapallocate.c /tmp/cciqFySH.i
> > > > > GNU CPP version 2.95.2 19991024 (release) (68k, Motorola syntax)
> > > > > #include "..." search starts here:
> > > > > #include <...> search starts here:
> > > > >  /opt/rtems/bare-m68302/lib/include
> > > > >  /opt/rtems/lib/gcc-lib/m68k-rtems/2.95.2/include
> > > > >  /opt/rtems/lib/gcc-lib/m68k-rtems/2.95.2/../../../../m68k-rtems/include
> > > > > End of search list.
> > > > > The following default directories have been omitted from the search path:
> > > > >  /opt/rtems/lib/gcc-lib/m68k-rtems/2.95.2/../../../../include/g++-3
> > > > >  /opt/rtems/lib/gcc-lib/m68k-rtems/2.95.2/../../../../m68k-rtems/sys-include
> > > > > End of omitted list.
> > > > >  /opt/rtems/lib/gcc-lib/m68k-rtems/2.95.2/cc1 /tmp/cciqFySH.i -quiet -dumpbase heapallocate.c
> > > > > -version -o /tmp/ccQjQxOm.s
> > > > > GNU C version 2.95.2 19991024 (release) (m68k-rtems) compiled by GNU C version 2.7.2.3.
> > > > >  /opt/rtems/m68k-rtems/bin/as -mc68000 -o /tmp/ccgd17n4.o /tmp/ccQjQxOm.s
> > > > > /tmp/ccQjQxOm.s: Assembler messages:
> > > > > /tmp/ccQjQxOm.s:22: Error: invalid instruction for this architecture; needs 68020 or 68030 or 68040
> > > > > or 68060 or cpu32 -- statement `divul.l 20(%a0),%d1:%d0' ignored
> > > > >
> > > > > The m68k I use is for the 68000, not the 68020, but the assembler wants 68020. Is this built into
> > > > > the rpm's? Do I have to rebuild everything from source and not use the rpm's. Or is there something
> > > > > I'm missing?
> > > > >
> > > > > Thanks
> > > > > russ
> > > >
> > > > Seems to me your assembler is bitching about getting 68020 code but was
> > > > told to assemble for the 68000. It is complaining that it was given
> > > > instructions that do not exist on the 68000. Somehow, your compiler is
> > > > not compiling for the 68000, but for the default 68020.
> > > >
> > > > Also, your bsp_specs file is wrong if your compiler does not understand
> > > > -qrtems. Check against other working targets, such as the mvme167 or
> > > > gen68360.
> > > > --
> > > > Charles-Antoine Gauthier
> > > > Institute for Information Technology   Institut de technologie de
> > > > l'information
> > > > National Research Council of Canada    Conseil national de recherches du
> > > > Canada
> >
> > --
> > Joel Sherrill, Ph.D.             Director of Research & Development
> > joel at OARcorp.com                 On-Line Applications Research
> > Ask me about RTEMS: a free RTOS  Huntsville AL 35805
> > Support Available                (256) 722-9985

-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel at OARcorp.com                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
   Support Available             (256) 722-9985



More information about the users mailing list