_data = .;
   .data : {                                    /* Data */
-       *(.data)
+       DATA_DATA
        CONSTRUCTORS
   }
 
 
                /*
                 * and the usual data section
                 */
-               *(.data)
+               DATA_DATA
                CONSTRUCTORS
 
                _edata = .;
 
                /*
                 * and the usual data section
                 */
-               *(.data)
+               DATA_DATA
                CONSTRUCTORS
 
                *(.init.data)
 
                /*
                 * and the usual data section
                 */
-               *(.data)
+               DATA_DATA
                CONSTRUCTORS
 
                _edata = .;
 
 
                /* And the rest... */
                *(.data.rel*)
-               *(.data)
+               DATA_DATA
                CONSTRUCTORS
 
                _edata = .;
 
                 __sdata = .;
                . = ALIGN(0x2000);
                *(.data.init_task)
-               *(.data)
+               DATA_DATA
 
                . = ALIGN(32);
                *(.data.cacheline_aligned)
 
 
   _sdata = .;
   .data : {                    /* Data */
-       *(.data .data.*)
+       DATA_DATA
+       *(.data.*)
        *(.exit.data)
        CONSTRUCTORS
        }
 
        . = ALIGN(0x2000) ;
                *(.data.init_task)
        . = ALIGN(0x4) ;
-               *(.data)
+               DATA_DATA
        . = ALIGN(0x4) ;
                *(.data.*)      
 
 
   /* writeable */
   . = ALIGN(4096);
   .data : AT(ADDR(.data) - LOAD_OFFSET) {      /* Data */
-       *(.data)
+       DATA_DATA
        CONSTRUCTORS
        } :data
 
 
 
   data : { } :data
   .data : AT(ADDR(.data) - LOAD_OFFSET)
-       { *(.data) *(.data1) *(.gnu.linkonce.d*) CONSTRUCTORS }
+       {
+               DATA_DATA
+               *(.data1)
+               *(.gnu.linkonce.d*)
+               CONSTRUCTORS
+       }
 
   . = ALIGN(16);       /* gp must be 16-byte aligned for exc. table */
   .got : AT(ADDR(.got) - LOAD_OFFSET)
 
   .data : {                    /* Data */
        *(.spu)
        *(.spi)
-       *(.data)
+       DATA_DATA
        CONSTRUCTORS
        }
 
 
   _etext = .;                  /* End of text section */
 
   .data : {                    /* Data */
-       *(.data)
+       DATA_DATA
        CONSTRUCTORS
        }
 
 
   _etext = .;                  /* End of text section */
 
   .data : {                    /* Data */
-       *(.data)
+       DATA_DATA
        CONSTRUCTORS
        . = ALIGN(16);          /* Exception table */
        __start___ex_table = .;
 
        .data DATA_ADDR : {
                . = ALIGN(4);
                _sdata = . ;
-               *(.data)
+               DATA_DATA
                . = ALIGN(8192) ;
                *(.data.init_task)
                _edata = . ;
 
     . = ALIGN(_PAGE_SIZE);
     *(.data.init_task)
 
-    *(.data)
+    DATA_DATA
 
     CONSTRUCTORS
   }
 
 
   . = ALIGN(L1_CACHE_BYTES);
   .data : {                    /* Data */
-       *(.data)
+       DATA_DATA
        CONSTRUCTORS
        }
 
 
 #ifdef CONFIG_PPC32
        .data    :
        {
-               *(.data)
+               DATA_DATA
                *(.sdata)
                *(.got.plt) *(.got)
        }
 
   . = ALIGN(4096);
   .data    :
   {
-    *(.data)
+    DATA_DATA
     *(.data1)
     *(.sdata)
     *(.sdata2)
 
   BUG_TABLE
 
   .data : {                    /* Data */
-       *(.data)
+       DATA_DATA
        CONSTRUCTORS
        }
 
 
   BUG_TABLE
 
   .data : {                    /* Data */
-       *(.data)
+       DATA_DATA
 
         /* Align the initial ramdisk image (INITRD) on page boundaries. */
         . = ALIGN(PAGE_SIZE);
 
   _etext = .;                  /* End of text section */
 
   .data : C_PHYS(.data) {                      /* Data */
-       *(.data)
+       DATA_DATA
        CONSTRUCTORS
        }
 
 
   RODATA
   .data    :
   {
-    *(.data)
+    DATA_DATA
     CONSTRUCTORS
   }
   .data1   : { *(.data1) }
 
 
   .data    :
   {
-    *(.data)
+    DATA_DATA
     CONSTRUCTORS
   }
   .data1   : { *(.data1) }
 
     *(.data.init_task)
     . = ALIGN(KERNEL_STACK_SIZE);
     *(.data.init_irqstack)
-    *(.data .data.* .gnu.linkonce.d.*)
+    DATA_DATA
+    *(.data.* .gnu.linkonce.d.*)
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
 
     *(.data.init_task)
     . = ALIGN(KERNEL_STACK_SIZE);
     *(.data.init_irqstack)
-    *(.data)
+    DATA_DATA
     *(.gnu.linkonce.d*)
     CONSTRUCTORS
   }
 
 /* Kernel data segment.  */
 #define DATA_CONTENTS                                                        \
                __sdata = . ;                                                 \
-               *(.data)                                                      \
+               DATA_DATA                                                     \
                        *(.exit.data)   /* 2.5 convention */                  \
                        *(.data.exit)   /* 2.4 convention */                  \
                . = ALIGN (16) ;                                              \
 
   . = ALIGN(PAGE_SIZE);        /* Align data segment to page size boundary */
                                /* Data */
   .data : AT(ADDR(.data) - LOAD_OFFSET) {
-       *(.data)
+       DATA_DATA
        CONSTRUCTORS
        } :data
 
 
   _fdata = .;
   .data :
   {
-    *(.data) CONSTRUCTORS
+    DATA_DATA
+    CONSTRUCTORS
     . = ALIGN(XCHAL_ICACHE_LINESIZE);
     *(.data.cacheline_aligned)
   }
 
 /* Align . to a 8 byte boundary equals to maximum function alignment. */
 #define ALIGN_FUNCTION()  . = ALIGN(8)
 
+/* .data section */
+#define DATA_DATA                                                      \
+       *(.data)
+
 #define RODATA                                                         \
        . = ALIGN(4096);                                                \
        .rodata           : AT(ADDR(.rodata) - LOAD_OFFSET) {           \