Explain why we don't make use of RDPC in the sparc PIC register setup.
authorDavid S. Miller <davem@davemloft.net>
Tue, 21 Feb 2012 23:45:17 +0000 (15:45 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 21 Feb 2012 01:52:01 +0000 (17:52 -0800)
* sysdeps/unix/sparc/sysdep.h: Document why we don't use
"rd %pc" in the PIC register setup sequences.

ChangeLog
sysdeps/unix/sparc/sysdep.h

index 5f966e8..c125719 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2012-02-20  David S. Miller  <davem@davemloft.net>
 
+       * sysdeps/unix/sparc/sysdep.h: Document why we don't use
+       "rd %pc" in the PIC register setup sequences.
+
        * sysdeps/sparc/crti.S: Try to use GOTDATA relocs.
        * sysdeps/sparc/sparc32/dl-machine.h (RTLD_START): Likewise.
        * sysdeps/sparc/sparc32/elf/start.S: Likewise.
index 10d561e..1a095cc 100644 (file)
@@ -39,6 +39,9 @@ __sparc_get_pc_thunk.reg:                                             \
        .previous;                                                      \
        .endif;
 
+/* Even when v9 we use a call sequence instead of using "rd %pc" because
+   RDPC is extremely expensive and incurs a full pipeline flush.  */
+
 #define SETUP_PIC_REG(reg)                                             \
        SPARC_PIC_THUNK(reg)                                            \
        sethi   %hi(_GLOBAL_OFFSET_TABLE_-4), %##reg;                   \