LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Find Resources
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Openrisc > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: "Robert Cragie" <rcc@j...>
    Date: Thu, 11 Sep 2003 15:05:09 +0100
    Subject: RE: [openrisc] SIGBUS when using eCos diag_printf
    Top

    That was the first thing I tried. I have seen problems in the past with
    optimisations turned on but normally only in debugging, with single-stepping
    getting confused.
    
    I would guess that there may be some issue with the or32 port to GCC 3.2.3
    which needs to be resolved.
    
    Robert Cragie, Design Engineer
    _______________________________________________________________
    Jennic Ltd, Furnival Street, Sheffield, S1 4QT,  UK
    http://www.jennic.com  Tel: +44 (0) 114 281 2655
    _______________________________________________________________
    
    > -----Original Message-----
    > From: owner-openrisc@o...
    > [mailto:owner-openrisc@o...]On Behalf Of Damjan Lampret
    > Sent: 11 September 2003 14:19
    > To: openrisc@o...
    > Subject: Re: [openrisc] SIGBUS when using eCos diag_printf
    >
    >
    > In another project there was also a strange thing going on and it
    > turned out
    > to be the stack overrun. Setting the stack to be bigger immediately solved
    > the problem. I don't know if this is the same in your case.
    >
    > regards,
    > Damjan
    >
    > ----- Original Message -----
    > From: <rcc@j...>
    > To: <openrisc@o...>
    > Sent: Thursday, September 11, 2003 9:50 AM
    > Subject: Re: [openrisc] SIGBUS when using eCos diag_printf
    >
    >
    > > Hi Marko,
    > >
    > > This occurs when using -O2 optimisation flag, but doesn't occur if I
    > > don't specify optimisation (i.e. no -O flag at all), so I have
    > solved the
    > > immediate problem but it does make the code considerably larger :-(
    > >
    > > Initial inspection seems to suggest that either the stack is getting
    > > corrupted or register misuse is occurring in the optimised code, as the
    > > exception occurs shortly after returning from the modulo call and
    > > appears to be due to dereferencing a bad address in a register:
    > >
    > >     820c: 04 00 0a 16 l.jal aa64 <___umoddi3>
    > >     8210: d7 e2 97 a4 l.sw 0xffffffa4(r2),r18
    > >     8214: 84 d2 00 04 l.lwz r6,0x4(r18)
    > >
    > > In the above, r18 has a bad address in. The unoptimised version looks
    > > like this, i.e. no instruction in the delay slot.
    > >
    > >     1410: 04 00 25 95 l.jal aa64 <___umoddi3>
    > >     1414: 15 00 00 00 l.nop 0x0
    > >     1418: 84 ab 00 00 l.lwz r5,0x0(r11)
    > >
    > > It would be nice to get to the bottom of why this occurs; if I have some
    > > spare time (I wish) I will try to unravel it a bit more.
    > >
    > > Robert
    > >
    > > ----- Original Message -----
    > > From: Marko Mlinar <markom@o... >
    > > To: openrisc@o...
    > > Date: Thu, 11 Sep 2003 08:09:19 +0200
    > > Subject: Re: [openrisc] SIGBUS when using eCos diag_printf
    > >
    > > >
    > > >
    > > > Robert,
    > > >
    > > > my guess would be that pointers for string decoding in libc are not
    > > > set-up
    > > > correctly or get messed-up. Usually libc libraries detect whether
    > > > your string
    > > > has something to replace e.g. % characters, also usually it has
    > > > some last
    > > > used combination cached. If there is something to replace it
    > > > allocates new
    > > > string or uses some static (more often) space, where it works. I am
    > > > not
    > > > familiar with library you are using, so I unfortunately cannot be
    > > > more
    > > > specific.
    > > >
    > > > hope it helps anyway,
    > > >
    > > > Marko
    > > >
    > > > On Wednesday 10 September 2003 19:19, Robert Cragie wrote:
    > > > > This is a bit of a long shot posting here, but I was wondering
    > > > if anyone
    > > > > else has experienced this problem. I am getting a SIGBUS (bus
    > > > error)
    > > > > exception when trying to call the printf supplied with eCos.
    > > > This is
    > > > > generic code and works fine on all other eCos platforms, so
    > > > the problem
    > > > > must be something to do with the OpenRISC environment.
    > > > >
    > > > > If I do:
    > > > >
    > > > > diag_printf("Just a string\n");
    > > > >
    > > > > it seems to work OK.
    > > > >
    > > > > However, if I do:
    > > > >
    > > > > diag_printf("Print an integer %d\n", integer);
    > > > >
    > > > > it bombs out of GDB with something like this:
    > > > >
    > > > > Program received signal SIGBUS, Bus error.
    > > > > 0x00007f9c in _cvt(unsigned long long, char*, long, char*)
    > > > (val=1987,
    > > > > buf=0xcc0c "", radix=10, digits=0x1116c "0123456789")
    > > > >     at
    > > > /home/rcc/ecos-sr/ecos/packages/infra/current/src/diag.cxx:273
    > > > > 273                 *cp++ = digits[val % radix];
    > > > > Current language:  auto; currently c++
    > > > >
    > > > > I am using GDB 5.3 and GCC 3.2.3 from the OpenCores CVS
    > > > server.
    > > > >
    > > > > Anyone seen this, or any ideas what might be going on? My
    > > > feeling is it's
    > > > > something to do with the 'val % radix' expression - 'val'
    > > > being unsigned
    > > > > long long etc and the associated math library. I will continue
    > > > to
    > > > > investigate further and see if I can spot anything odd.
    > > > >
    > > > > Robert Cragie, Design Engineer
    > > > >
    > > >
    > > _____________________________________________________________
    > > __
    > > > > Jennic Ltd, Furnival Street, Sheffield, S1 4QT,  UK
    > > > > http://www.jennic.com  Tel: +44 (0) 114 281 2655
    > > > >
    > > >
    > > _____________________________________________________________
    > > __
    > > >
    > > 
    > >
    >
    >
    > 
    
    
    
    

    ReferenceAuthor
    Re: [openrisc] SIGBUS when using eCos diag_printfDamjan Lampret

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.