This patch series cleans up the section names on the microblaze
architecture. It requires the architecture-independent macro
definitions from this patch series:
<http://www.spinics.net/lists/mips/msg33499.html>
The long-term goal here is to add support for building the kernel with
-ffunction-sections -fdata-sections. This requires renaming all the
magic section names in the kernel of the form .text.foo, .data.foo,
.bss.foo, and .rodata.foo to not have collisions with sections
generated for code like:
static int nosave = 0; /* -fdata-sections places in .data.nosave */
static void head(); /* -ffunction-sections places in .text.head */
Note that these patches have not been boot-tested (aside from testing
the analogous changes on x86), since I don't have access to the
appropriate hardware.
-Tim Abbott
Tim Abbott (2):
microblaze: use new macro for .data.cacheline_aligned section.
microblaze: use new macros for .data.init_task
arch/microblaze/kernel/init_task.c | 3 +--
arch/microblaze/kernel/vmlinux.lds.S | 8 ++------
2 files changed, 3 insertions(+), 8 deletions(-)
Signed-off-by: Tim Abbott <[email protected]>
Cc: Michal Simek <[email protected]>
Cc: [email protected]
---
arch/microblaze/kernel/vmlinux.lds.S | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/arch/microblaze/kernel/vmlinux.lds.S b/arch/microblaze/kernel/vmlinux.lds.S
index 840385e..de25a68 100644
--- a/arch/microblaze/kernel/vmlinux.lds.S
+++ b/arch/microblaze/kernel/vmlinux.lds.S
@@ -64,9 +64,8 @@ SECTIONS {
_sdata = . ;
.data ALIGN (4096) : { /* page aligned when MMU used - origin 0x4 */
*(.data)
+ CACHELINE_ALIGNED_DATA(32)
}
- . = ALIGN(32);
- .data.cacheline_aligned : { *(.data.cacheline_aligned) }
_edata = . ;
/* Reserve some low RAM for r0 based memory references */
--
1.6.2.1
.data.init_task should not need a separate output section; this change
moves it into the .data section.
Signed-off-by: Tim Abbott <[email protected]>
Cc: Michal Simek <[email protected]>
Cc: [email protected]
---
arch/microblaze/kernel/init_task.c | 3 +--
arch/microblaze/kernel/vmlinux.lds.S | 5 +----
2 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/arch/microblaze/kernel/init_task.c b/arch/microblaze/kernel/init_task.c
index 48eb9fb..d765fc1 100644
--- a/arch/microblaze/kernel/init_task.c
+++ b/arch/microblaze/kernel/init_task.c
@@ -21,8 +21,7 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
struct mm_struct init_mm = INIT_MM(init_mm);
EXPORT_SYMBOL(init_mm);
-union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"))) =
+union thread_union init_thread_union __init_task_data =
{ INIT_THREAD_INFO(init_task) };
struct task_struct init_task = INIT_TASK(init_task);
diff --git a/arch/microblaze/kernel/vmlinux.lds.S b/arch/microblaze/kernel/vmlinux.lds.S
index de25a68..dcb2bc1 100644
--- a/arch/microblaze/kernel/vmlinux.lds.S
+++ b/arch/microblaze/kernel/vmlinux.lds.S
@@ -63,6 +63,7 @@ SECTIONS {
_sdata = . ;
.data ALIGN (4096) : { /* page aligned when MMU used - origin 0x4 */
+ INIT_TASK_DATA(THREAD_SIZE)
*(.data)
CACHELINE_ALIGNED_DATA(32)
}
@@ -73,10 +74,6 @@ SECTIONS {
r0_ram = . ;
. = . + 4096; /* a page should be enough */
- /* The initial task */
- . = ALIGN(8192);
- .data.init_task : { *(.data.init_task) }
-
/* Under the microblaze ABI, .sdata and .sbss must be contiguous */
. = ALIGN(8);
.sdata : {
--
1.6.2.1