RFA: Update v850 crt0.S file

J. Johnston jjohnstn@redhat.com
Wed Aug 6 06:08:00 GMT 2003


Yes, go ahead.

-- Jeff J.

Nick Clifton wrote:
> Hi Guys,
> 
>   This patch fixes a couple of problems with the crt0.o file for the
>   v850 port:
> 
>     * Only three stack slots were being reserved before calling
>       main().  Under some circumstances main can try to save all the
>       arguments registers (r6-r9) which required four empty stack
>       slots.
> 
>     * The crt0.o file was always being compiled with -mv850, even when
>       the target was the v850e processor.  This meant that the 'ctbp'
>       system register was never initialised and so code that uses the
>       v850e call table instructions never worked.
> 
>     * The files still tested for the redundant v850ea port.
>     
>   May I apply this patch please ?
> 
> Cheers
>         Nick
> 
> 2003-07-31  Nick Clifton  <nickc@redhat.com>
> 
> 	* libc/sys/sysnecv850/crt0.S (_start): Allocate 4 slots on stack
> 	before calling main, in case it saves its argument registers.
>         Remove reference to deleted v850ea port.
>         * configure.host: Remove reference to deleted v850ea port.
>         Do not use -mv850 when building for v850e target.  This
> 	prevents the ctbp system register from being initialised.
> 
> Index: libc/sys/sysnecv850/crt0.S
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/sys/sysnecv850/crt0.S,v
> retrieving revision 1.2
> diff -c -3 -p -r1.2 crt0.S
> *** libc/sys/sysnecv850/crt0.S	27 Sep 2002 20:26:00 -0000	1.2
> --- libc/sys/sysnecv850/crt0.S	31 Jul 2003 10:56:39 -0000
> ***************
> *** 5,11 ****
>   
>   _start:
>   
> ! #if defined __v850e__ || defined __v850ea__
>   	
>   	movea   255,		r0,	r20
>   	mov     65535,		r21
> --- 5,11 ----
>   
>   _start:
>   
> ! #if defined __v850e__
>   	
>   	movea   255,		r0,	r20
>   	mov     65535,		r21
> *************** _start:
> *** 23,29 ****
>   	bl      .L0
>   .L1:
>   	jarl    ___main,	r31
> ! 	addi    -12,		sp,	sp
>   	mov     0,		r6
>   	mov     0,		r7
>   	mov     0,		r8
> --- 23,29 ----
>   	bl      .L0
>   .L1:
>   	jarl    ___main,	r31
> ! 	addi    -16,		sp,	sp
>   	mov     0,		r6
>   	mov     0,		r7
>   	mov     0,		r8
> *************** _start:
> *** 53,59 ****
>   	bl      .L0
>   .L1:
>   	jarl    ___main,	r31
> ! 	addi    -12,		sp,	sp
>   	mov     0,		r6
>   	mov     0,		r7
>   	mov     0,		r8
> --- 53,59 ----
>   	bl      .L0
>   .L1:
>   	jarl    ___main,	r31
> ! 	addi    -16,		sp,	sp
>   	mov     0,		r6
>   	mov     0,		r7
>   	mov     0,		r8
> 
> Index: configure.host
> ===================================================================
> RCS file: /cvs/src/src/newlib/configure.host,v
> retrieving revision 1.53
> diff -c -3 -p -r1.53 configure.host
> *** configure.host	25 Jul 2003 16:06:00 -0000	1.53
> --- configure.host	31 Jul 2003 10:56:39 -0000
> *************** case "${host_cpu}" in
> *** 206,216 ****
>   	;;
>     v850e)
>   	machine_dir=v850
> ! 	newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mv850 "
> ! 	;;
> !   v850ea)
> ! 	machine_dir=v850
> ! 	newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mv850 "
>   	;;
>     w65*)
>   	machine_dir=w65
> --- 206,212 ----
>   	;;
>     v850e)
>   	machine_dir=v850
> ! 	newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED "
>   	;;
>     w65*)
>   	machine_dir=w65
>         
> 




More information about the Newlib mailing list