[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

binutils-2.9.1.0.25 + rtems-patches is broken



I believe I posted about this before, but it can't hurt to point it out
again. This code fragment doesn't work as expected. The "i8259s_cache"
variable is in the BSS, and the BSS will just be zeroed after this code
executes in start.S. The solution is to move the instruction "movw
$0xFFFB, SYM(i8259s_cache)" to a point after the BSS is zeroed. That area
runs in 32-bit protected mode, so it should also fix the other problem
you're seeing. 

See start.S in the ts_386ex BSP for an example.

Tony

  ____________________________________________________________
 /                                                            \
| Tony R. Ambardar         |   Department of Electrical &      |
| M.Sc., M.Eng.            |   Computer Engineering            | 
| Email: tonya at ece.ubc.ca  |   University of British Columbia  |
| Ph: (604) 822-2872       |   2356 Main Mall, Vancouver B.C.  |
| Fax:(604) 822-5949       |   V6T 1Z4  CANADA                 |
 \____________________________________________________________/

On Mon, 2 Aug 1999 joel at oarcorp.com wrote:

> On 30 Jul 1999, Ian Lance Taylor wrote:
> 
> >    Date: Fri, 30 Jul 1999 14:53:20 -0500 (CDT)
> >    From: <joel at oarcorp.com>
> > 
> >    it is used like this in i386ex/start/start.S
> > 
> >    start.S:      movw    $0xFFFB, SYM(i8259s_cache) /* set up same values in cache */
> > 
> >    I am heading out the door.  Any other ideas what could have tripped this?
> > 
> > This instruction appears in a .code16 section.  In a .code16 section,
> > current versions of gas assume that all addresses are 16 bits unless
> > told otherwise.
> > 
> > If you change the line to
> >     addr32   movw $0xFFFB, SYM(i8259s_cache)
> > then you will get a 32 bit address reference.
> > 
> > You may want to use addr32 only when NEW_GAS is defined.
> 
> I think the attached patch is what you had in mind.  
> 
> Ralf .. does this fix the problem on your toolset?
> 
> --joel
>