From fe81c303e0095a891ee8338266d7c8e0f9544aa8 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Fri, 7 Oct 2011 10:09:22 +0000 Subject: * rx/crt0.S: Initialise the PID address register. (__pid_base): Define weakly. --- libgloss/rx/crt0.S | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'libgloss/rx') 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 -- cgit v1.2.3