Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2011-10-07 14:09:22 +0400
committerNick Clifton <nickc@redhat.com>2011-10-07 14:09:22 +0400
commitfe81c303e0095a891ee8338266d7c8e0f9544aa8 (patch)
tree16e98d7cb3536cc34682847150cb503b64112304 /libgloss/rx
parent7bbfea993a12c146054142631135738782a57932 (diff)
* rx/crt0.S: Initialise the PID address register.
(__pid_base): Define weakly.
Diffstat (limited to 'libgloss/rx')
-rw-r--r--libgloss/rx/crt0.S25
1 files changed, 20 insertions, 5 deletions
diff --git a/libgloss/rx/crt0.S b/libgloss/rx/crt0.S
index 26955f991..222742352 100644
--- a/libgloss/rx/crt0.S
+++ b/libgloss/rx/crt0.S
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008, 2009 Red Hat Incorporated.
+/* Copyright (c) 2008, 2009, 2011 Red Hat Incorporated.
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -50,11 +50,20 @@ _start:
mov #__bsssize, r3
sstr.l
- /* Initialise the small data area pointer.
- The register used here must agree with the definition of
- GP_BASE_REGNUM in gcc/config/rx/rx.h. */
+ /* Initialize data pointer register(s).
+ Note: The registers used here should agree with the definition of
+ GP_BASE_REGNUM in gcc/config/rx/rx.h.
+ Note: We are assuming that -mint-register has not been used when
+ compiling the application. */
+#ifdef _RX_PID
+ /* Initialise the constant data pointer and small data pointers. */
+ mov #__pid_base, r13
+ mov #__gp, r12
+#else
+ /* Initialise the small data area pointer. */
mov #__gp, r13
-
+#endif
+
bsr.a __rx_init
#ifdef PROFILE_SUPPORT /* Defined in gcrt0.S. */
@@ -129,6 +138,12 @@ __rx_init:
__rx_fini:
bsr.a _rx_run_fini_array
+ .section .rodata
+ .balign 4
+ .global __pid_base
+ .weak __pid_base
+__pid_base:
+
.section .sdata
.balign 4
.global __gp