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

binutils-2.9.1.0.25 + rtems-patches is broken





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
-------------- next part --------------
Index: start/start.S
===================================================================
RCS file: /usr1/rtems/CVS-PRIVATE/rtems/c/src/lib/libbsp/i386/i386ex/start/start.S,v
retrieving revision 1.2
retrieving revision 1.3
diff -c -r1.2 -r1.3
*** start.S	1999/05/11 15:15:03	1.2
--- start.S	1999/08/02 20:26:57	1.3
***************
*** 26,32 ****
   *  found in the file LICENSE in this distribution or at
   *  http://www.OARcorp.com/rtems/license.html.
   *
!  *  $Id: start.S,v 1.2 1999/05/11 15:15:03 joel Exp $
  
  	
  changes:	
--- 26,32 ----
   *  found in the file LICENSE in this distribution or at
   *  http://www.OARcorp.com/rtems/license.html.
   *
!  *  $Id: start.S,v 1.3 1999/08/02 20:26:57 joel Exp $
  
  	
  changes:	
***************
*** 324,330 ****
  	SetExRegByte(OCW1M  , 0xde ) # IR0  only = 0xfe.  for IR5 and IR0 active use 0xde
  	SetExRegByte(INTCFG , 0x00 )
  	
! 	movw    $0xFFFB, SYM(i8259s_cache) /* set up same values in cache */
  	
  SYM(SetCS4):	
  	SetExRegWord(CS4ADL , 0x702)         #Configure chip select 4
--- 324,339 ----
  	SetExRegByte(OCW1M  , 0xde ) # IR0  only = 0xfe.  for IR5 and IR0 active use 0xde
  	SetExRegByte(INTCFG , 0x00 )
  	
! 	/*
! 	 *  The addr32 override should ensure that the address for
! 	 *  i8259s_cache is put in 32-bit address space.
! 	 */
! 
! #if defined(NEW_GAS)
! 	addr32 movw $0xFFFB, SYM(i8259s_cache) # set up same values in cache
! #else
! 	movw    $0xFFFB, SYM(i8259s_cache)     # set up same values in cache
! #endif
  	
  SYM(SetCS4):	
  	SetExRegWord(CS4ADL , 0x702)         #Configure chip select 4