Browse Source

Updates to the v850 architecture from Miles Bader <miles@gnu.org>

Eric Andersen 22 years ago
parent
commit
8fda4c4091
4 changed files with 25 additions and 20 deletions
  1. 1 6
      extra/gcc-uClibc/.cvsignore
  2. 1 1
      include/stdio.h
  3. 10 9
      libc/sysdeps/linux/v850/crt0.S
  4. 13 4
      libc/sysdeps/linux/v850/setjmp.S

+ 1 - 6
extra/gcc-uClibc/.cvsignore

@@ -1,7 +1,2 @@
 gcc-uClibc.h
-i386-uclibc-*
-m68k-uclibc-*
-arm-uclibc-*
-sh-uclibc-*
-powerpc-uclibc-*
-sparc-uclibc-*
+*-uclibc-*

+ 1 - 1
include/stdio.h

@@ -1,5 +1,5 @@
 /* Define ISO C stdio on top of C++ iostreams.
-   Copyright (C) 1991, 1994-1999, 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1991, 1994-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or

+ 10 - 9
libc/sysdeps/linux/v850/crt0.S

@@ -1,8 +1,8 @@
 /*
  * libc/sysdeps/linux/v850/crt0.S -- Initial program entry point for linux/v850
  *
- *  Copyright (C) 2001  NEC Corporation
- *  Copyright (C) 2001  Miles Bader <miles@gnu.org>
+ *  Copyright (C) 2001,2002  NEC Corporation
+ *  Copyright (C) 2001,2002  Miles Bader <miles@gnu.org>
  *
  * This file is subject to the terms and conditions of the GNU Lesser
  * General Public License.  See the file COPYING.LIB in the main
@@ -25,20 +25,21 @@ C_ENTRY(start):
 
 	mov	r7, r8			// Arg 2: envp
 	mov	r6, r10			// skip argc elements to get envp start
-1:	add	4, r8
-	add	-1, r10
-	bp	1b
+	add	1, r10			// ...plus the NULL at the end of argv
+	shl	2, r10			// Convert to byte-count to skip
+	add	r10, r8
 
 	// Zero bss area, since we can't rely upon any loader to do so
 	mov	hilo(C_SYMBOL_NAME(edata)), ep
 	mov	hilo(C_SYMBOL_NAME(end)), r10
-2:	sst.w	r0, 0[ep]
+2:	cmp	ep, r10
+	be	3f
+	sst.w	r0, 0[ep]
 	add	4, ep
-	cmp	ep, r10
-	bne	2b
+	br	2b
 
 	// Load CTBP register
-	mov	hilo(C_SYMBOL_NAME(_ctbp)), r19
+3:	mov	hilo(C_SYMBOL_NAME(_ctbp)), r19
 	ldsr	r19, ctbp
 
 	// Load GP

+ 13 - 4
libc/sysdeps/linux/v850/setjmp.S

@@ -1,8 +1,8 @@
 /*
  * libc/sysdeps/linux/v850/setjmp.S -- `setjmp' for v850
  *
- *  Copyright (C) 2001  NEC Corporation
- *  Copyright (C) 2001  Miles Bader <miles@gnu.org>
+ *  Copyright (C) 2001,2002  NEC Corporation
+ *  Copyright (C) 2001,2002  Miles Bader <miles@gnu.org>
  *
  * This file is subject to the terms and conditions of the GNU Lesser
  * General Public License.  See the file COPYING.LIB in the main
@@ -18,7 +18,16 @@
 #include <clinkage.h>
 
 	.text
-C_ENTRY(__sigsetjmp):
+C_ENTRY(setjmp):
+	mov	1, r7			/* Save the signal mask.  */
+	br	C_SYMBOL_NAME(__sigsetjmp)
+
+	.globl C_SYMBOL_NAME(_setjmp)
+C_SYMBOL_NAME(_setjmp):
+	mov	0, r7			/* Don't save the signal mask.  */
+
+	.globl C_SYMBOL_NAME(__sigsetjmp)
+C_SYMBOL_NAME(__sigsetjmp):
 	/* Save registers */
 	mov	r6, ep
 	sst.w	sp, 0[ep]
@@ -36,4 +45,4 @@ C_ENTRY(__sigsetjmp):
 	sst.w	r29, 48[ep]
 	/* Make a tail call to __sigjmp_save; it takes the same args.  */
 	jr	C_SYMBOL_NAME(__sigjmp_save)
-C_END(__sigsetjmp)
+C_END(setjmp)