summaryrefslogtreecommitdiff
path: root/cesar/ecos/packages/hal/sparc
diff options
context:
space:
mode:
authorschodet2009-03-24 14:27:36 +0000
committerschodet2009-03-24 14:27:36 +0000
commit607902061e6a2473c5c6d4e105dea0f95779fcc4 (patch)
treecf64a84cd18ca8888444962d8fab577f6017976d /cesar/ecos/packages/hal/sparc
parent1e478627916ef4107d761cb6f9b5d140aa28e8db (diff)
* ecos/packages/hal/sparc:
- moved interrupt stack as it is used before bss zeroing, overwriting local ram contents. git-svn-id: svn+ssh://pessac/svn/cesar/trunk@4282 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cesar/ecos/packages/hal/sparc')
-rw-r--r--cesar/ecos/packages/hal/sparc/arch/current/src/sparc.ld5
-rw-r--r--cesar/ecos/packages/hal/sparc/arch/current/src/vectors.S2
-rw-r--r--cesar/ecos/packages/hal/sparc/leon/current/include/pkgconf/mlt_sparc_leon_ahbram.ldi11
-rw-r--r--cesar/ecos/packages/hal/sparc/leon/current/include/pkgconf/mlt_sparc_leon_ram.ldi15
-rw-r--r--cesar/ecos/packages/hal/sparc/leon3/current/include/pkgconf/mlt_sparc_leon3_ram.ldi1
5 files changed, 21 insertions, 13 deletions
diff --git a/cesar/ecos/packages/hal/sparc/arch/current/src/sparc.ld b/cesar/ecos/packages/hal/sparc/arch/current/src/sparc.ld
index 063e3c4e03..8e5cd1c654 100644
--- a/cesar/ecos/packages/hal/sparc/arch/current/src/sparc.ld
+++ b/cesar/ecos/packages/hal/sparc/arch/current/src/sparc.ld
@@ -154,6 +154,11 @@ GROUP(libtarget.a libgcc.a)
__bss_end = ABSOLUTE (.); } \
> _region_
+#define SECTION_interrupt_stack(_region_, _vma_, _lma_) \
+ .interrupt_stack _vma_ : _lma_ \
+ { *(.interrupt_stack) } \
+ > _region_
+
#define SECTION_private(_region_, _vma_, _lma_) \
.private _vma_ : _lma_ \
{ __private_start = ABSOLUTE (.); \
diff --git a/cesar/ecos/packages/hal/sparc/arch/current/src/vectors.S b/cesar/ecos/packages/hal/sparc/arch/current/src/vectors.S
index 29378aa2a6..1c2aa67aae 100644
--- a/cesar/ecos/packages/hal/sparc/arch/current/src/vectors.S
+++ b/cesar/ecos/packages/hal/sparc/arch/current/src/vectors.S
@@ -900,7 +900,7 @@ hal_vsr_table:
#if defined(BOOTUPSTACK_IS_INTERRUPTSTACK) || \
defined(CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK)
- .section ".bss"
+ .section ".interrupt_stack"
#ifndef CYGPKG_HAL_SMP_SUPPORT
diff --git a/cesar/ecos/packages/hal/sparc/leon/current/include/pkgconf/mlt_sparc_leon_ahbram.ldi b/cesar/ecos/packages/hal/sparc/leon/current/include/pkgconf/mlt_sparc_leon_ahbram.ldi
index c86578c7c6..cb8600bec7 100644
--- a/cesar/ecos/packages/hal/sparc/leon/current/include/pkgconf/mlt_sparc_leon_ahbram.ldi
+++ b/cesar/ecos/packages/hal/sparc/leon/current/include/pkgconf/mlt_sparc_leon_ahbram.ldi
@@ -21,14 +21,17 @@ SECTIONS
SECTION_data (ahbram, ALIGN (0x1), LMA_EQ_VMA)
SECTION_private (ahbram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_bss (ahbram, ALIGN (0x8) (NOLOAD), LMA_EQ_VMA)
- CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
#ifdef CYG_HAL_LOCALRAM
- // Will be overwritten by bss and heap.
- CYG_LABEL_DEFN(__dlram_data_source) = ALIGN (ADDR (.bss), 8);
+ // Will be overwritten by bss.
SECTION_dlram_data (tclrd, , AT (LOADADDR (.bss)))
SECTION_dlram_bss (tclrd, (NOLOAD), LMA_EQ_VMA)
- CYG_LABEL_DEFN(__ilram_source) = ALIGN (CYG_LABEL_DEFN (__dlram_data_source) + SIZEOF (.dlram_data), 8);
SECTION_ilram (tclri, , FOLLOWING (.dlram_data))
+ CYG_LABEL_DEFN(__dlram_data_source) = LOADADDR (.dlram_data);
+ CYG_LABEL_DEFN(__ilram_source) = LOADADDR (.ilram);
+ . = ADDR (.bss)
+ + MAX (SIZEOF (.bss), SIZEOF (.dlram_data) + SIZEOF (.ilram));
#endif
+ SECTION_interrupt_stack (ahbram, ALIGN (8) (NOLOAD), LMA_EQ_VMA)
+ CYG_LABEL_DEFN(__heap1) = ALIGN (8);
SECTIONS_END
}
diff --git a/cesar/ecos/packages/hal/sparc/leon/current/include/pkgconf/mlt_sparc_leon_ram.ldi b/cesar/ecos/packages/hal/sparc/leon/current/include/pkgconf/mlt_sparc_leon_ram.ldi
index 807c8055a2..0560ae5e4d 100644
--- a/cesar/ecos/packages/hal/sparc/leon/current/include/pkgconf/mlt_sparc_leon_ram.ldi
+++ b/cesar/ecos/packages/hal/sparc/leon/current/include/pkgconf/mlt_sparc_leon_ram.ldi
@@ -1,7 +1,3 @@
-// eCos memory layout - Fri Oct 20 08:18:20 2000
-
-// This is a generated file - do not edit
-
#include <cyg/infra/cyg_type.inc>
MEMORY
@@ -24,14 +20,17 @@ SECTIONS
SECTION_data (ram, ALIGN (0x1), LMA_EQ_VMA)
SECTION_private (ram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_bss (ram, ALIGN (0x8) (NOLOAD), LMA_EQ_VMA)
- CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
#ifdef CYG_HAL_LOCALRAM
- // Will be overwritten by bss and heap.
- CYG_LABEL_DEFN(__dlram_data_source) = ALIGN (ADDR (.bss), 8);
+ // Will be overwritten by bss.
SECTION_dlram_data (tclrd, , AT (LOADADDR (.bss)))
SECTION_dlram_bss (tclrd, (NOLOAD), LMA_EQ_VMA)
- CYG_LABEL_DEFN(__ilram_source) = ALIGN (CYG_LABEL_DEFN (__dlram_data_source) + SIZEOF (.dlram_data), 8);
SECTION_ilram (tclri, , FOLLOWING (.dlram_data))
+ CYG_LABEL_DEFN(__dlram_data_source) = LOADADDR (.dlram_data);
+ CYG_LABEL_DEFN(__ilram_source) = LOADADDR (.ilram);
+ . = ADDR (.bss)
+ + MAX (SIZEOF (.bss), SIZEOF (.dlram_data) + SIZEOF (.ilram));
#endif
+ SECTION_interrupt_stack (ram, ALIGN (8) (NOLOAD), LMA_EQ_VMA)
+ CYG_LABEL_DEFN(__heap1) = ALIGN (8);
SECTIONS_END
}
diff --git a/cesar/ecos/packages/hal/sparc/leon3/current/include/pkgconf/mlt_sparc_leon3_ram.ldi b/cesar/ecos/packages/hal/sparc/leon3/current/include/pkgconf/mlt_sparc_leon3_ram.ldi
index c6df5cbe59..ae80ab0ea5 100644
--- a/cesar/ecos/packages/hal/sparc/leon3/current/include/pkgconf/mlt_sparc_leon3_ram.ldi
+++ b/cesar/ecos/packages/hal/sparc/leon3/current/include/pkgconf/mlt_sparc_leon3_ram.ldi
@@ -21,6 +21,7 @@ SECTIONS
SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
SECTION_data (ram, ALIGN (0x1), LMA_EQ_VMA)
SECTION_bss (ram, ALIGN (0x8) (NOLOAD), LMA_EQ_VMA)
+ SECTION_interrupt_stack (ram, ALIGN (0x8) (NOLOAD), LMA_EQ_VMA)
CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
SECTIONS_END
}