[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
binutils-2.9.1.0.25 + rtems-patches is broken
- Date: Mon, 2 Aug 1999 15:09:28 -0700 (PDT)
- From: tonya at ece.ubc.ca (Tony R. Ambardar)
- Subject: 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
>