From 51c85da2ce4f2134271ee16b5427c95a020c282b Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 12 Jun 2012 12:26:35 +0200 Subject: libchip/ata: Fix pre-processor symbol evaluation --- c/src/libchip/ide/ata.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/c/src/libchip/ide/ata.c b/c/src/libchip/ide/ata.c index 245d6d6f15..18d8d14386 100644 --- a/c/src/libchip/ide/ata.c +++ b/c/src/libchip/ide/ata.c @@ -33,7 +33,7 @@ bool ata_trace; #define ata_printf if (ata_trace) printf #endif -#if !defined(CPU_SIMPLE_VECTORED_INTERRUPTS) +#if CPU_SIMPLE_VECTORED_INTERRUPTS != TRUE #include #define ATA_IRQ_CHAIN_MAX_CNT 4 /* support up to 4 ATA devices */ typedef struct { @@ -134,7 +134,7 @@ static bool ata_initialized = false; static rtems_id ata_task_id; static rtems_id ata_queue_id; -#if defined(CPU_SIMPLE_VECTORED_INTERRUPTS) +#if CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE /* Mapping of interrupt vectors to devices */ static rtems_chain_control ata_int_vec[ATA_MAX_RTEMS_INT_VEC_NUMBER + 1]; #endif @@ -632,7 +632,7 @@ ata_add_to_controller_queue(rtems_device_minor_number ctrl_minor, * RETURNS: * NONE */ -#if defined(CPU_SIMPLE_VECTORED_INTERRUPTS) +#if CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE static rtems_isr ata_interrupt_handler(rtems_vector_number vec) { rtems_chain_node *the_node = rtems_chain_first(&ata_int_vec[vec]); @@ -1153,7 +1153,7 @@ rtems_ata_initialize(rtems_device_major_number major, dev_t device; ata_int_st_t *int_st; -#if defined(CPU_SIMPLE_VECTORED_INTERRUPTS) +#if CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE rtems_isr_entry old_isr; #else int ata_irq_chain_use; @@ -1238,7 +1238,7 @@ rtems_ata_initialize(rtems_device_major_number major, for (i = 0; i < (2 * IDE_CTRL_MAX_MINOR_NUMBER); i++) ata_devs[i].device = ATA_UNDEFINED_VALUE; -#if defined(CPU_SIMPLE_VECTORED_INTERRUPTS) +#if CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE /* prepare ATA driver for handling interrupt driven devices */ for (i = 0; i < ATA_MAX_RTEMS_INT_VEC_NUMBER; i++) rtems_chain_initialize_empty(&ata_int_vec[i]); @@ -1278,7 +1278,7 @@ rtems_ata_initialize(rtems_device_major_number major, } int_st->ctrl_minor = ctrl_minor; -#if defined(CPU_SIMPLE_VECTORED_INTERRUPTS) +#if CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE status = rtems_interrupt_catch( ata_interrupt_handler, IDE_Controller_Table[ctrl_minor].int_vec, @@ -1330,7 +1330,7 @@ rtems_ata_initialize(rtems_device_major_number major, rtems_disk_io_done(); return status; } -#if defined(CPU_SIMPLE_VECTORED_INTERRUPTS) +#if CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE rtems_chain_append( &ata_int_vec[IDE_Controller_Table[ctrl_minor].int_vec], &int_st->link); -- cgit v1.2.3 From fd153c73bd2fbf8d5997ef225009f3388a916649 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 12 Jun 2012 15:27:17 +0200 Subject: bsps: Replace NIRVANA region Replace the "NIRVANA" region with the more verbose "UNEXPECTED_SECTIONS" region. Move the region definition into the "linkcmds.base" files. --- c/src/lib/libbsp/arm/csb336/startup/linkcmds | 1 - c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb337 | 1 - c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb637 | 1 - c/src/lib/libbsp/arm/edb7312/startup/linkcmds | 1 - c/src/lib/libbsp/arm/gdbarmsim/startup/linkcmds | 1 - c/src/lib/libbsp/arm/gp32/startup/linkcmds | 1 - c/src/lib/libbsp/arm/gumstix/startup/linkcmds | 1 - c/src/lib/libbsp/arm/lm3s69xx/startup/linkcmds.lm3s6965 | 1 - .../libbsp/arm/lpc24xx/startup/linkcmds.lpc17xx_ea_ram | 1 - .../arm/lpc24xx/startup/linkcmds.lpc17xx_ea_rom_int | 1 - c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2362 | 1 - .../libbsp/arm/lpc24xx/startup/linkcmds.lpc23xx_tli800 | 1 - .../lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ea | 1 - .../libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_ram | 1 - .../arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_ext | 1 - .../arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_int | 1 - .../arm/lpc24xx/startup/linkcmds.lpc24xx_plx800_ram | 1 - .../arm/lpc24xx/startup/linkcmds.lpc24xx_plx800_rom_int | 1 - .../lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx | 1 - .../arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_1 | 1 - .../arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_2 | 1 - .../libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_phycore | 1 - c/src/lib/libbsp/arm/nds/startup/linkcmds | 1 - c/src/lib/libbsp/arm/rtl22xx/startup/linkcmds | 1 - c/src/lib/libbsp/arm/shared/startup/linkcmds.base | 15 +++++++++++++-- c/src/lib/libbsp/arm/smdk2410/startup/linkcmds | 1 - c/src/lib/libbsp/arm/stm32f4/startup/linkcmds.stm32f4 | 1 - c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.base | 15 +++++++++++---- c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.brs5l | 1 - c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.dp2 | 1 - .../lib/libbsp/powerpc/gen5200/startup/linkcmds.icecube | 1 - .../libbsp/powerpc/gen5200/startup/linkcmds.pm520_cr825 | 1 - .../libbsp/powerpc/gen5200/startup/linkcmds.pm520_ze30 | 1 - c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds | 1 - c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.base | 15 +++++++++++---- .../libbsp/powerpc/gen83xx/startup/linkcmds.hsc_cm01 | 1 - .../libbsp/powerpc/gen83xx/startup/linkcmds.mpc8309som | 1 - .../libbsp/powerpc/gen83xx/startup/linkcmds.mpc8313erdb | 1 - .../powerpc/gen83xx/startup/linkcmds.mpc8349eamds | 1 - .../libbsp/powerpc/mpc55xxevb/startup/linkcmds.gwlcfm | 1 - .../powerpc/mpc55xxevb/startup/linkcmds.mpc5566evb | 1 - .../powerpc/mpc55xxevb/startup/linkcmds.mpc5643l_evb | 1 - .../powerpc/mpc55xxevb/startup/linkcmds.mpc5674fevb | 1 - .../powerpc/mpc55xxevb/startup/linkcmds.phycore_mpc5554 | 1 - .../libbsp/powerpc/qoriq/startup/linkcmds.qoriq_core_0 | 5 ++--- .../libbsp/powerpc/qoriq/startup/linkcmds.qoriq_core_1 | 5 ++--- .../powerpc/qoriq/startup/linkcmds.qoriq_p1020rdb | 5 ++--- c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base | 15 +++++++++++++-- .../lib/libbsp/powerpc/t32mppc/startup/linkcmds.t32mppc | 5 ++--- c/src/lib/libbsp/powerpc/tqm8xx/startup/linkcmds.base | 17 ++++++++++++----- c/src/lib/libbsp/powerpc/tqm8xx/startup/linkcmds.tqm8xx | 1 - 51 files changed, 68 insertions(+), 71 deletions(-) diff --git a/c/src/lib/libbsp/arm/csb336/startup/linkcmds b/c/src/lib/libbsp/arm/csb336/startup/linkcmds index 5619fedf04..0e13a9ceac 100644 --- a/c/src/lib/libbsp/arm/csb336/startup/linkcmds +++ b/c/src/lib/libbsp/arm/csb336/startup/linkcmds @@ -1,7 +1,6 @@ MEMORY { SDRAM_MMU : ORIGIN = 0x08200000, LENGTH = 16k SDRAM : ORIGIN = 0x08204000, LENGTH = 30M - 16k - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", SDRAM); diff --git a/c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb337 b/c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb337 index 03f03162db..62db0dfec3 100644 --- a/c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb337 +++ b/c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb337 @@ -2,7 +2,6 @@ MEMORY { SDRAM_MMU : ORIGIN = 0x20100000, LENGTH = 16k SDRAM : ORIGIN = 0x20104000, LENGTH = 15M - 16k SRAM : ORIGIN = 0x00200000, LENGTH = 16k - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", SDRAM); diff --git a/c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb637 b/c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb637 index 8e660c231c..c86a0ad1a8 100644 --- a/c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb637 +++ b/c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb637 @@ -2,7 +2,6 @@ MEMORY { SDRAM_MMU : ORIGIN = 0x20100000, LENGTH = 16k SDRAM : ORIGIN = 0x20104000, LENGTH = 63M - 16k SRAM : ORIGIN = 0x00200000, LENGTH = 16k - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", SDRAM); diff --git a/c/src/lib/libbsp/arm/edb7312/startup/linkcmds b/c/src/lib/libbsp/arm/edb7312/startup/linkcmds index 7b5a0b8553..f0a12a77b4 100644 --- a/c/src/lib/libbsp/arm/edb7312/startup/linkcmds +++ b/c/src/lib/libbsp/arm/edb7312/startup/linkcmds @@ -1,6 +1,5 @@ MEMORY { SDRAM : ORIGIN = 0x00000000, LENGTH = 16M - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", SDRAM); diff --git a/c/src/lib/libbsp/arm/gdbarmsim/startup/linkcmds b/c/src/lib/libbsp/arm/gdbarmsim/startup/linkcmds index 2b8e2153a2..45b0f75aca 100644 --- a/c/src/lib/libbsp/arm/gdbarmsim/startup/linkcmds +++ b/c/src/lib/libbsp/arm/gdbarmsim/startup/linkcmds @@ -1,6 +1,5 @@ MEMORY { RAM : ORIGIN = 0x00000000, LENGTH = 4M - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", RAM); diff --git a/c/src/lib/libbsp/arm/gp32/startup/linkcmds b/c/src/lib/libbsp/arm/gp32/startup/linkcmds index bfba44083a..d705a2b862 100644 --- a/c/src/lib/libbsp/arm/gp32/startup/linkcmds +++ b/c/src/lib/libbsp/arm/gp32/startup/linkcmds @@ -1,7 +1,6 @@ MEMORY { SDRAM_MMU : ORIGIN = 0x0c000000, LENGTH = 16k SDRAM : ORIGIN = 0x0c004000, LENGTH = 7M - 16k - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", SDRAM); diff --git a/c/src/lib/libbsp/arm/gumstix/startup/linkcmds b/c/src/lib/libbsp/arm/gumstix/startup/linkcmds index 37a5318aa1..84c5ccadab 100644 --- a/c/src/lib/libbsp/arm/gumstix/startup/linkcmds +++ b/c/src/lib/libbsp/arm/gumstix/startup/linkcmds @@ -2,7 +2,6 @@ MEMORY { SDRAM_MMU : ORIGIN = 0xa0000000, LENGTH = 16k SDRAM : ORIGIN = 0xa0004000, LENGTH = 64M - 16k SRAM : ORIGIN = 0x00000000, LENGTH = 16k - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", SDRAM); diff --git a/c/src/lib/libbsp/arm/lm3s69xx/startup/linkcmds.lm3s6965 b/c/src/lib/libbsp/arm/lm3s69xx/startup/linkcmds.lm3s6965 index aad5e0305a..b3de8257d6 100644 --- a/c/src/lib/libbsp/arm/lm3s69xx/startup/linkcmds.lm3s6965 +++ b/c/src/lib/libbsp/arm/lm3s69xx/startup/linkcmds.lm3s6965 @@ -7,7 +7,6 @@ MEMORY { RAM_INT (AIW) : ORIGIN = 0x20000000, LENGTH = 16M ROM_INT (RX) : ORIGIN = 0x00000000, LENGTH = 64M - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", ROM_INT); diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc17xx_ea_ram b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc17xx_ea_ram index 60faf1267e..88aaef7aed 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc17xx_ea_ram +++ b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc17xx_ea_ram @@ -4,7 +4,6 @@ MEMORY { RAM_INT (AIW) : ORIGIN = 0x10000000, LENGTH = 64k RAM_PER (AIW) : ORIGIN = 0x20000000, LENGTH = 32k RAM_EXT (AIW) : ORIGIN = 0xa0000000, LENGTH = 32M - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", RAM_EXT); diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc17xx_ea_rom_int b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc17xx_ea_rom_int index dd87517114..5fa6a800d4 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc17xx_ea_rom_int +++ b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc17xx_ea_rom_int @@ -4,7 +4,6 @@ MEMORY { ROM_INT (RX) : ORIGIN = 0x00000000, LENGTH = 512k RAM_INT (AIW) : ORIGIN = 0x10000000, LENGTH = 64k RAM_EXT (AIW) : ORIGIN = 0xa0000000, LENGTH = 32M - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", ROM_INT); diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2362 b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2362 index a9e46a17c8..fec6a25c4c 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2362 +++ b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2362 @@ -39,7 +39,6 @@ MEMORY { RAM_USB (AIW) : ORIGIN = 0x7fd00000, LENGTH = 8k RAM_ETH (AIW) : ORIGIN = 0x7fe00000, LENGTH = 16k ROM_INT (RX) : ORIGIN = 0x00000000, LENGTH = 128k - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", ROM_INT); diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc23xx_tli800 b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc23xx_tli800 index 987c14053e..3f097634fd 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc23xx_tli800 +++ b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc23xx_tli800 @@ -43,7 +43,6 @@ MEMORY { ROM_BOOT (RX) : ORIGIN = 0x00000000, LENGTH = 4k ROM_CFG (RX) : ORIGIN = 0x00001000, LENGTH = 4k ROM_INT (RX) : ORIGIN = 0x00002000, LENGTH = 120k - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", ROM_BOOT); diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ea b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ea index eadbb4e7eb..f7bced5019 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ea +++ b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ea @@ -36,7 +36,6 @@ MEMORY { RAM_INT (AIW) : ORIGIN = 0x40000000, LENGTH = 64k RAM_EXT (AIW) : ORIGIN = 0xa0000000, LENGTH = 32M - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", RAM_EXT); diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_ram b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_ram index 0a285826f0..d11731b24e 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_ram +++ b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_ram @@ -36,7 +36,6 @@ MEMORY { RAM_INT (AIW) : ORIGIN = 0x40000000, LENGTH = 64k RAM_EXT (AIW) : ORIGIN = 0xa0000000, LENGTH = 8M - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", RAM_EXT); diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_ext b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_ext index 74d63e647b..5398d6606f 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_ext +++ b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_ext @@ -40,7 +40,6 @@ MEMORY { RAM_EXT (AIW) : ORIGIN = 0xa0400000, LENGTH = 4M ROM_BOOT (RX) : ORIGIN = 0x81000000, LENGTH = 16k ROM_EXT (RX) : ORIGIN = 0x81010000, LENGTH = 2M - 64k - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", ROM_BOOT); diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_int b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_int index 48246c55a0..0a314d59cb 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_int +++ b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_int @@ -40,7 +40,6 @@ MEMORY { RAM_INT (AIW) : ORIGIN = 0x40008000, LENGTH = 32k RAM_EXT (AIW) : ORIGIN = 0xa0400000, LENGTH = 4M ROM_INT (RX) : ORIGIN = 0x00000000, LENGTH = 512k - 8k - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", ROM_INT); diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_plx800_ram b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_plx800_ram index 6198b58e54..9d39f8d243 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_plx800_ram +++ b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_plx800_ram @@ -9,7 +9,6 @@ MEMORY { RAM_EXT : ORIGIN = 0xa0000000, LENGTH = 32M ROM_INT : ORIGIN = 0x00000000, LENGTH = 512k - 8k ROM_EXT : ORIGIN = 0x80000000, LENGTH = 4M - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", RAM_EXT); diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_plx800_rom_int b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_plx800_rom_int index f49b884690..851c4167be 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_plx800_rom_int +++ b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_plx800_rom_int @@ -9,7 +9,6 @@ MEMORY { RAM_EXT : ORIGIN = 0xa0000000, LENGTH = 32M ROM_INT : ORIGIN = 0x00000000, LENGTH = 512k - 8k ROM_EXT : ORIGIN = 0x80000000, LENGTH = 4M - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", ROM_INT); diff --git a/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx b/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx index 810d187b5b..a466ecfe6f 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx +++ b/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx @@ -39,7 +39,6 @@ MEMORY { RAM_MMU : ORIGIN = 0x80000000, LENGTH = 16k /* SDRAM on DYCS0 */ RAM_SCRATCH : ORIGIN = 0x80004000, LENGTH = 4k /* SDRAM on DYCS0 */ RAM_EXT : ORIGIN = 0x80005000, LENGTH = 32M - 20k /* SDRAM on DYCS0 */ - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", RAM_EXT); diff --git a/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_1 b/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_1 index 67d18e0340..f5f8cb60ca 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_1 +++ b/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_1 @@ -39,7 +39,6 @@ MEMORY { RAM_VEC : ORIGIN = 0x0803a000, LENGTH = 8k RAM_MMU : ORIGIN = 0x0803c000, LENGTH = 16k RAM_SCRATCH : ORIGIN = 0x80004000, LENGTH = 4k /* SDRAM on DYCS0 */ - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", RAM_INT); diff --git a/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_2 b/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_2 index 9fc98859e5..bc457a3731 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_2 +++ b/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_mzx_stage_2 @@ -40,7 +40,6 @@ MEMORY { RAM_MMU : ORIGIN = 0x80000000, LENGTH = 16k /* SDRAM on DYCS0 */ RAM_SCRATCH : ORIGIN = 0x80004000, LENGTH = 4k /* SDRAM on DYCS0 */ RAM_EXT : ORIGIN = 0x81c00000, LENGTH = 4M /* SDRAM on DYCS0 */ - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", RAM_EXT); diff --git a/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_phycore b/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_phycore index 4f448268e0..b094fb119c 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_phycore +++ b/c/src/lib/libbsp/arm/lpc32xx/startup/linkcmds.lpc32xx_phycore @@ -40,7 +40,6 @@ MEMORY { RAM_MMU : ORIGIN = 0x80000000, LENGTH = 16k /* SDRAM on DYCS0 */ RAM_EXT : ORIGIN = 0x80004000, LENGTH = 64M - 16k /* SDRAM on DYCS0 */ ROM_EXT : ORIGIN = 0xe0000000, LENGTH = 2M /* NOR flash on CS0 */ - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", RAM_EXT); diff --git a/c/src/lib/libbsp/arm/nds/startup/linkcmds b/c/src/lib/libbsp/arm/nds/startup/linkcmds index f8cf10197b..964bb6c9b3 100644 --- a/c/src/lib/libbsp/arm/nds/startup/linkcmds +++ b/c/src/lib/libbsp/arm/nds/startup/linkcmds @@ -3,7 +3,6 @@ MEMORY { EWRAM : ORIGIN = 0x02000000, LENGTH = 4M - 4k DTCM : ORIGIN = 0x0b000000, LENGTH = 16k ITCM : ORIGIN = 0x01000000, LENGTH = 32k - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", EWRAM); diff --git a/c/src/lib/libbsp/arm/rtl22xx/startup/linkcmds b/c/src/lib/libbsp/arm/rtl22xx/startup/linkcmds index 003e94b12b..0d5625c6c0 100644 --- a/c/src/lib/libbsp/arm/rtl22xx/startup/linkcmds +++ b/c/src/lib/libbsp/arm/rtl22xx/startup/linkcmds @@ -1,7 +1,6 @@ MEMORY { SDRAM : ORIGIN = 0x81000000, LENGTH = 512k SRAM : ORIGIN = 0x40000000, LENGTH = 16k - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", SDRAM); diff --git a/c/src/lib/libbsp/arm/shared/startup/linkcmds.base b/c/src/lib/libbsp/arm/shared/startup/linkcmds.base index 5174d480ad..d6561dde77 100644 --- a/c/src/lib/libbsp/arm/shared/startup/linkcmds.base +++ b/c/src/lib/libbsp/arm/shared/startup/linkcmds.base @@ -56,6 +56,10 @@ bsp_stack_und_size = ALIGN (bsp_stack_und_size, bsp_stack_align); bsp_stack_main_size = DEFINED (bsp_stack_main_size) ? bsp_stack_main_size : 0; bsp_stack_main_size = ALIGN (bsp_stack_main_size, bsp_stack_align); +MEMORY { + UNEXPECTED_SECTIONS : ORIGIN = 0xffffffff, LENGTH = 0 +} + SECTIONS { .start : { bsp_section_start_begin = .; @@ -424,6 +428,13 @@ SECTIONS { .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } - /* Catch all unknown sections */ - .nirvana : { *(*) } > NIRVANA + /* + * This is a RTEMS specific section to catch all unexpected input + * sections. In case you get an error like + * "section `.unexpected_sections' will not fit in region + * `UNEXPECTED_SECTIONS'" + * you have to figure out the offending input section and add it to the + * appropriate output section definition above. + */ + .unexpected_sections : { *(*) } > UNEXPECTED_SECTIONS } diff --git a/c/src/lib/libbsp/arm/smdk2410/startup/linkcmds b/c/src/lib/libbsp/arm/smdk2410/startup/linkcmds index afd9270af8..2a14c80f96 100644 --- a/c/src/lib/libbsp/arm/smdk2410/startup/linkcmds +++ b/c/src/lib/libbsp/arm/smdk2410/startup/linkcmds @@ -1,7 +1,6 @@ MEMORY { SDRAM_MMU : ORIGIN = 0x30000000, LENGTH = 16k SDRAM : ORIGIN = 0x30004000, LENGTH = 64M - 16k - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", SDRAM); diff --git a/c/src/lib/libbsp/arm/stm32f4/startup/linkcmds.stm32f4 b/c/src/lib/libbsp/arm/stm32f4/startup/linkcmds.stm32f4 index 823b60438e..a68846ec39 100644 --- a/c/src/lib/libbsp/arm/stm32f4/startup/linkcmds.stm32f4 +++ b/c/src/lib/libbsp/arm/stm32f4/startup/linkcmds.stm32f4 @@ -1,7 +1,6 @@ MEMORY { RAM_INT : ORIGIN = 0x20000000, LENGTH = 128k ROM_INT : ORIGIN = 0x00000000, LENGTH = 1M - NIRVANA : ORIGIN = 0, LENGTH = 0 } REGION_ALIAS ("REGION_START", ROM_INT); diff --git a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.base b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.base index 5458000ea2..4510df1668 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.base +++ b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.base @@ -26,6 +26,10 @@ RamBase = bsp_ram_start; RamSize = bsp_ram_size; HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; +MEMORY { + UNEXPECTED_SECTIONS : ORIGIN = 0xffffffff, LENGTH = 0 +} + SECTIONS { /* * BSP: MPC5200 registers @@ -320,9 +324,12 @@ SECTIONS { } /* - * BSP: Catch all unknown sections + * This is a RTEMS specific section to catch all unexpected input + * sections. In case you get an error like + * "section `.unexpected_sections' will not fit in region + * `UNEXPECTED_SECTIONS'" + * you have to figure out the offending input section and add it to the + * appropriate output section definition above. */ - .nirvana : { - *(*) - } > NIRVANA + .unexpected_sections : { *(*) } > UNEXPECTED_SECTIONS } diff --git a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.brs5l b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.brs5l index 40e57cae43..944cc36f4d 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.brs5l +++ b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.brs5l @@ -10,7 +10,6 @@ MEMORY { ROM : ORIGIN = 0xffe00000, LENGTH = 2M DPRAM : ORIGIN = 0xff000000, LENGTH = 1k REGS : ORIGIN = 0xf0000000, LENGTH = 64k - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } INCLUDE linkcmds.base diff --git a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.dp2 b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.dp2 index 0aafdd7072..398919ae8c 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.dp2 +++ b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.dp2 @@ -10,7 +10,6 @@ MEMORY { ROM : ORIGIN = 0xffe00000, LENGTH = 2M REGS : ORIGIN = 0xf0000000, LENGTH = 64k DPRAM : ORIGIN = 0x0, LENGTH = 0 - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } INCLUDE linkcmds.base diff --git a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.icecube b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.icecube index dc47f1b615..17c707fb49 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.icecube +++ b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.icecube @@ -10,7 +10,6 @@ MEMORY { ROM : ORIGIN = 0xffe00000, LENGTH = 2M REGS : ORIGIN = 0xf0000000, LENGTH = 64k DPRAM : ORIGIN = 0x0, LENGTH = 0 - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } INCLUDE linkcmds.base diff --git a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.pm520_cr825 b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.pm520_cr825 index 83c2596fc4..55b987695c 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.pm520_cr825 +++ b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.pm520_cr825 @@ -10,7 +10,6 @@ MEMORY { ROM : ORIGIN = 0xffe00000, LENGTH = 2M REGS : ORIGIN = 0xf0000000, LENGTH = 64k DPRAM : ORIGIN = 0xff000000, LENGTH = 1k - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } INCLUDE linkcmds.base diff --git a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.pm520_ze30 b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.pm520_ze30 index 83c2596fc4..55b987695c 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.pm520_ze30 +++ b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.pm520_ze30 @@ -10,7 +10,6 @@ MEMORY { ROM : ORIGIN = 0xffe00000, LENGTH = 2M REGS : ORIGIN = 0xf0000000, LENGTH = 64k DPRAM : ORIGIN = 0xff000000, LENGTH = 1k - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } INCLUDE linkcmds.base diff --git a/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds b/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds index 5f680246a2..9d7c4a8d36 100644 --- a/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds +++ b/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds @@ -12,7 +12,6 @@ MEMORY { RAM : ORIGIN = 0x0, LENGTH = 128M ROM : ORIGIN = 0xfe000000, LENGTH = 8M MPC83XX_REGS : ORIGIN = 0xe0000000, LENGTH = 256k - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } INCLUDE linkcmds.base diff --git a/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.base b/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.base index 6faeec1b70..9def5f0e88 100644 --- a/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.base +++ b/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.base @@ -22,6 +22,10 @@ RamBase = bsp_ram_start; RamSize = bsp_ram_size; HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; +MEMORY { + UNEXPECTED_SECTIONS : ORIGIN = 0xffffffff, LENGTH = 0 +} + SECTIONS { /* * BSP: MPC83XX registers @@ -336,9 +340,12 @@ SECTIONS { } /* - * BSP: Catch all unknown sections + * This is a RTEMS specific section to catch all unexpected input + * sections. In case you get an error like + * "section `.unexpected_sections' will not fit in region + * `UNEXPECTED_SECTIONS'" + * you have to figure out the offending input section and add it to the + * appropriate output section definition above. */ - .nirvana : { - *(*) - } > NIRVANA + .unexpected_sections : { *(*) } > UNEXPECTED_SECTIONS } diff --git a/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.hsc_cm01 b/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.hsc_cm01 index bbbf2ddbbd..021d2419d2 100644 --- a/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.hsc_cm01 +++ b/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.hsc_cm01 @@ -8,7 +8,6 @@ MEMORY { RAM : ORIGIN = 0x0, LENGTH = 256M ROM : ORIGIN = 0xfe000000, LENGTH = 8M MPC83XX_REGS : ORIGIN = 0xe0000000, LENGTH = 1M - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } INCLUDE linkcmds.base diff --git a/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.mpc8309som b/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.mpc8309som index 6f5e80137b..e2195b7259 100644 --- a/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.mpc8309som +++ b/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.mpc8309som @@ -8,7 +8,6 @@ MEMORY { RAM : ORIGIN = 0x0, LENGTH = 256M ROM : ORIGIN = 0xfe000000, LENGTH = 8M MPC83XX_REGS : ORIGIN = 0xe0000000, LENGTH = 256k - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } INCLUDE linkcmds.base diff --git a/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.mpc8313erdb b/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.mpc8313erdb index 0898e95570..4a47c9d863 100644 --- a/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.mpc8313erdb +++ b/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.mpc8313erdb @@ -8,7 +8,6 @@ MEMORY { RAM : ORIGIN = 0x0, LENGTH = 128M ROM : ORIGIN = 0xfe000000, LENGTH = 8M MPC83XX_REGS : ORIGIN = 0xe0000000, LENGTH = 256k - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } INCLUDE linkcmds.base diff --git a/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.mpc8349eamds b/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.mpc8349eamds index 7864bd023e..d140e073d2 100644 --- a/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.mpc8349eamds +++ b/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.mpc8349eamds @@ -8,7 +8,6 @@ MEMORY { RAM : ORIGIN = 0x0, LENGTH = 256M ROM : ORIGIN = 0xfe000000, LENGTH = 8M MPC83XX_REGS : ORIGIN = 0xe0000000, LENGTH = 256k - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } INCLUDE linkcmds.base diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.gwlcfm b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.gwlcfm index 3f1bd3d9e4..391127f8c7 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.gwlcfm +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.gwlcfm @@ -3,7 +3,6 @@ MEMORY { RAM : ORIGIN = 0x40000000, LENGTH = 80K RAM_EXT : ORIGIN = 0x20000000, LENGTH = 512K NOCACHE : ORIGIN = 0x0, LENGTH = 0 - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } REGION_ALIAS ("REGION_START", ROM); diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5566evb b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5566evb index 1989473d3d..12c6389642 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5566evb +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5566evb @@ -3,7 +3,6 @@ MEMORY { RAM : ORIGIN = 0x40000000, LENGTH = 128K RAM_EXT : ORIGIN = 0x20000000, LENGTH = 512K NOCACHE : ORIGIN = 0x0, LENGTH = 0 - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } REGION_ALIAS ("REGION_START", ROM); diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5643l_evb b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5643l_evb index d0203be0d2..f9d2dc010c 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5643l_evb +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5643l_evb @@ -4,7 +4,6 @@ MEMORY { RAM_1 : ORIGIN = 0x50000000, LENGTH = 64K RAM_EXT : ORIGIN = 0x0, LENGTH = 0 NOCACHE : ORIGIN = 0x0, LENGTH = 0 - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } bsp_ram_1_start = ORIGIN (RAM_1); diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5674fevb b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5674fevb index cb7c1ed7b0..5925207d4c 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5674fevb +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5674fevb @@ -3,7 +3,6 @@ MEMORY { RAM : ORIGIN = 0x40000000, LENGTH = 256K - 16k RAM_EXT : ORIGIN = 0x20000000, LENGTH = 512K NOCACHE : ORIGIN = 0x4003c000, LENGTH = 16k - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } REGION_ALIAS ("REGION_START", ROM); diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.phycore_mpc5554 b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.phycore_mpc5554 index 18a0e8f44d..1db3190887 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.phycore_mpc5554 +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.phycore_mpc5554 @@ -8,7 +8,6 @@ MEMORY { RAM_EXT : ORIGIN = 0x21000000, LENGTH = 4M DEBUG_RAM : ORIGIN = 0x21400000, LENGTH = 4M NOCACHE : ORIGIN = 0x0, LENGTH = 0 - NIRVANA : ORIGIN = 0x00000000, LENGTH = 0 } bsp_debug_ram_start = ORIGIN (DEBUG_RAM); diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_core_0 b/c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_core_0 index d30d1c8f92..502a26ce58 100644 --- a/c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_core_0 +++ b/c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_core_0 @@ -7,7 +7,6 @@ MEMORY { LOW : ORIGIN = 0x4000, LENGTH = 16M - 16k HIGH : ORIGIN = 0x1000000, LENGTH = 32M - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } REGION_ALIAS ("REGION_START", LOW); @@ -25,8 +24,8 @@ REGION_ALIAS ("REGION_BSS", HIGH); REGION_ALIAS ("REGION_RWEXTRA", HIGH); REGION_ALIAS ("REGION_WORK", HIGH); REGION_ALIAS ("REGION_STACK", HIGH); -REGION_ALIAS ("REGION_NOCACHE", NIRVANA); -REGION_ALIAS ("REGION_NOCACHE_LOAD", NIRVANA); +REGION_ALIAS ("REGION_NOCACHE", HIGH); +REGION_ALIAS ("REGION_NOCACHE_LOAD", HIGH); bsp_section_robarrier_align = 0x1000000; bsp_section_rwbarrier_align = 0x1000000; diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_core_1 b/c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_core_1 index 1bc021d2a5..82fadf71dd 100644 --- a/c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_core_1 +++ b/c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_core_1 @@ -6,7 +6,6 @@ MEMORY { RAM : ORIGIN = 0x4000000, LENGTH = 64M - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } REGION_ALIAS ("REGION_START", RAM); @@ -24,8 +23,8 @@ REGION_ALIAS ("REGION_BSS", RAM); REGION_ALIAS ("REGION_RWEXTRA", RAM); REGION_ALIAS ("REGION_WORK", RAM); REGION_ALIAS ("REGION_STACK", RAM); -REGION_ALIAS ("REGION_NOCACHE", NIRVANA); -REGION_ALIAS ("REGION_NOCACHE_LOAD", NIRVANA); +REGION_ALIAS ("REGION_NOCACHE", RAM); +REGION_ALIAS ("REGION_NOCACHE_LOAD", RAM); bsp_section_robarrier_align = 0x1000000; bsp_section_rwbarrier_align = 0x1000000; diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_p1020rdb b/c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_p1020rdb index 3543414a79..ef7fd575c5 100644 --- a/c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_p1020rdb +++ b/c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_p1020rdb @@ -7,7 +7,6 @@ MEMORY { LOW : ORIGIN = 0x4000, LENGTH = 16M - 16k HIGH : ORIGIN = 0x1000000, LENGTH = 32M - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } REGION_ALIAS ("REGION_START", LOW); @@ -25,8 +24,8 @@ REGION_ALIAS ("REGION_BSS", HIGH); REGION_ALIAS ("REGION_RWEXTRA", HIGH); REGION_ALIAS ("REGION_WORK", HIGH); REGION_ALIAS ("REGION_STACK", HIGH); -REGION_ALIAS ("REGION_NOCACHE", NIRVANA); -REGION_ALIAS ("REGION_NOCACHE_LOAD", NIRVANA); +REGION_ALIAS ("REGION_NOCACHE", HIGH); +REGION_ALIAS ("REGION_NOCACHE_LOAD", HIGH); bsp_section_robarrier_align = 0x1000000; bsp_section_rwbarrier_align = 0x1000000; diff --git a/c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base b/c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base index 95453a9457..5c6f5e6cd6 100644 --- a/c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base +++ b/c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base @@ -34,6 +34,10 @@ bsp_section_xbarrier_align = DEFINED (bsp_section_xbarrier_align) ? bsp_section_ bsp_section_robarrier_align = DEFINED (bsp_section_robarrier_align) ? bsp_section_robarrier_align : 1; bsp_section_rwbarrier_align = DEFINED (bsp_section_rwbarrier_align) ? bsp_section_rwbarrier_align : 1; +MEMORY { + UNEXPECTED_SECTIONS : ORIGIN = 0xffffffff, LENGTH = 0 +} + SECTIONS { .start : { bsp_section_start_begin = .; @@ -379,6 +383,13 @@ SECTIONS { .PPC.EMB.apuinfo 0 : { *(.PPC.EMB.apuinfo) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } - /* Catch all unknown sections */ - .nirvana : { *(*) } > NIRVANA + /* + * This is a RTEMS specific section to catch all unexpected input + * sections. In case you get an error like + * "section `.unexpected_sections' will not fit in region + * `UNEXPECTED_SECTIONS'" + * you have to figure out the offending input section and add it to the + * appropriate output section definition above. + */ + .unexpected_sections : { *(*) } > UNEXPECTED_SECTIONS } diff --git a/c/src/lib/libbsp/powerpc/t32mppc/startup/linkcmds.t32mppc b/c/src/lib/libbsp/powerpc/t32mppc/startup/linkcmds.t32mppc index b4f6e98997..a73da78312 100644 --- a/c/src/lib/libbsp/powerpc/t32mppc/startup/linkcmds.t32mppc +++ b/c/src/lib/libbsp/powerpc/t32mppc/startup/linkcmds.t32mppc @@ -1,6 +1,5 @@ MEMORY { RAM : ORIGIN = 0x0, LENGTH = 128M - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } REGION_ALIAS ("REGION_START", RAM); @@ -18,7 +17,7 @@ REGION_ALIAS ("REGION_BSS", RAM); REGION_ALIAS ("REGION_RWEXTRA", RAM); REGION_ALIAS ("REGION_WORK", RAM); REGION_ALIAS ("REGION_STACK", RAM); -REGION_ALIAS ("REGION_NOCACHE", NIRVANA); -REGION_ALIAS ("REGION_NOCACHE_LOAD", NIRVANA); +REGION_ALIAS ("REGION_NOCACHE", RAM); +REGION_ALIAS ("REGION_NOCACHE_LOAD", RAM); INCLUDE linkcmds.base diff --git a/c/src/lib/libbsp/powerpc/tqm8xx/startup/linkcmds.base b/c/src/lib/libbsp/powerpc/tqm8xx/startup/linkcmds.base index c4a0eec115..0525e5c915 100644 --- a/c/src/lib/libbsp/powerpc/tqm8xx/startup/linkcmds.base +++ b/c/src/lib/libbsp/powerpc/tqm8xx/startup/linkcmds.base @@ -18,6 +18,10 @@ bsp_rom_size = LENGTH (ROM); bsp_section_align = 32; +MEMORY { + UNEXPECTED_SECTIONS : ORIGIN = 0xffffffff, LENGTH = 0 +} + SECTIONS { dpram : @@ -306,11 +310,14 @@ SECTIONS { /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) } - + /* - * BSP: Catch all unknown sections + * This is a RTEMS specific section to catch all unexpected input + * sections. In case you get an error like + * "section `.unexpected_sections' will not fit in region + * `UNEXPECTED_SECTIONS'" + * you have to figure out the offending input section and add it to the + * appropriate output section definition above. */ - .nirvana : { - *(*) - } > NIRVANA + .unexpected_sections : { *(*) } > UNEXPECTED_SECTIONS } diff --git a/c/src/lib/libbsp/powerpc/tqm8xx/startup/linkcmds.tqm8xx b/c/src/lib/libbsp/powerpc/tqm8xx/startup/linkcmds.tqm8xx index 69b9c32799..d5668b67be 100644 --- a/c/src/lib/libbsp/powerpc/tqm8xx/startup/linkcmds.tqm8xx +++ b/c/src/lib/libbsp/powerpc/tqm8xx/startup/linkcmds.tqm8xx @@ -9,7 +9,6 @@ MEMORY { RAM : ORIGIN = 0x0, LENGTH = 128M immr : org = 0xfa200000, l = 16K ROM : ORIGIN = 0x40000000, LENGTH = 8M - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } INCLUDE linkcmds.base -- cgit v1.2.3 From 1364eb9935cb6911598436a5cc5ca5c2705f088e Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 12 Jun 2012 17:57:35 -0500 Subject: v850 - byte swap instructions not available on all multilibs --- cpukit/score/cpu/v850/rtems/score/cpu.h | 31 +++++++++++++++++++++++++------ cpukit/score/cpu/v850/rtems/score/v850.h | 9 ++++++++- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/cpukit/score/cpu/v850/rtems/score/cpu.h b/cpukit/score/cpu/v850/rtems/score/cpu.h index 591af00e36..875f1607c7 100644 --- a/cpukit/score/cpu/v850/rtems/score/cpu.h +++ b/cpukit/score/cpu/v850/rtems/score/cpu.h @@ -1154,10 +1154,23 @@ static inline uint32_t CPU_swap_u32( uint32_t value ) { - unsigned int v, swapped; + unsigned int swapped; - v = value; - __asm__ __volatile__ ("bsw %0, %1" : "=r" (v), "=&r" (swapped) ); + #if (V850_HAS_BYTE_SWAP_INSTRUCTION == 1) + unsigned int v; + + v = value; + __asm__ __volatile__ ("bsw %0, %1" : "=r" (v), "=&r" (swapped) ); + #else + uint32_t byte1, byte2, byte3, byte4; + + byte4 = (value >> 24) & 0xff; + byte3 = (value >> 16) & 0xff; + byte2 = (value >> 8) & 0xff; + byte1 = value & 0xff; + + swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4; + #endif return swapped; } @@ -1174,10 +1187,16 @@ static inline uint32_t CPU_swap_u32( */ static inline uint16_t CPU_swap_u16( uint16_t value ) { - unsigned int v, swapped; + unsigned int swapped; + + #if (V850_HAS_BYTE_SWAP_INSTRUCTION == 1) + unsigned int v; - v = value; - __asm__ __volatile__ ("bsh %0, %1" : "=r" (v), "=&r" (swapped) ); + v = value; + __asm__ __volatile__ ("bsh %0, %1" : "=r" (v), "=&r" (swapped) ); + #else + swapped = ((value & 0xff) << 8) | ((value >> 8) & 0xff); + #endif return swapped; } diff --git a/cpukit/score/cpu/v850/rtems/score/v850.h b/cpukit/score/cpu/v850/rtems/score/v850.h index b76ddbcd0b..3e9bec56f3 100644 --- a/cpukit/score/cpu/v850/rtems/score/v850.h +++ b/cpukit/score/cpu/v850/rtems/score/v850.h @@ -40,30 +40,37 @@ extern "C" { */ #define CPU_MODEL_NAME "rtems_multilib" #define V850_HAS_FPU 0 +#define V850_HAS_BYTE_SWAP_INSTRUCTION 0 #elif defined(__v850e2v3__) #define CPU_MODEL_NAME "v850e2v3" #define V850_HAS_FPU 1 +#define V850_HAS_BYTE_SWAP_INSTRUCTION 1 #elif defined(__v850e2__) #define CPU_MODEL_NAME "v850e2" #define V850_HAS_FPU 0 +#define V850_HAS_BYTE_SWAP_INSTRUCTION 1 #elif defined(__v850es__) #define CPU_MODEL_NAME "v850es" #define V850_HAS_FPU 0 +#define V850_HAS_BYTE_SWAP_INSTRUCTION 1 #elif defined(__v850e1__) #define CPU_MODEL_NAME "v850e1" #define V850_HAS_FPU 0 +#define V850_HAS_BYTE_SWAP_INSTRUCTION 1 #elif defined(__v850e__) #define CPU_MODEL_NAME "v850e" #define V850_HAS_FPU 0 +#define V850_HAS_BYTE_SWAP_INSTRUCTION 1 #else #define CPU_MODEL_NAME "v850" -#define V850_HAS_FPU 0 +#define V850_HAS_FPU 0 +#define V850_HAS_BYTE_SWAP_INSTRUCTION 0 #endif -- cgit v1.2.3 From 50fc8f65a6a7a602720af82af58b453dc663f082 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 13 Jun 2012 09:44:32 +0200 Subject: sapi: Add nanoseconds_per_tick to configuration Add nanoseconds_per_tick to rtems_configuration_table. This value will be derived from the microseconds_per_tick value. This avoids some calculations at run-time. --- c/src/lib/libbsp/arm/nds/startup/bspstart.c | 2 +- cpukit/sapi/include/confdefs.h | 1 + cpukit/sapi/include/rtems/config.h | 15 ++++++++++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/c/src/lib/libbsp/arm/nds/startup/bspstart.c b/c/src/lib/libbsp/arm/nds/startup/bspstart.c index 0fc67d374e..59c074e410 100644 --- a/c/src/lib/libbsp/arm/nds/startup/bspstart.c +++ b/c/src/lib/libbsp/arm/nds/startup/bspstart.c @@ -43,7 +43,7 @@ void bsp_start (void) arm_cpu_mode = 0x1f; /* configure clock period */ - Configuration.microseconds_per_tick = 10000; /* us */ + rtems_configuration_set_microseconds_per_tick (10000); defaultExceptionHandler (); } diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h index 0f804ee7cc..d4f21ca376 100644 --- a/cpukit/sapi/include/confdefs.h +++ b/cpukit/sapi/include/confdefs.h @@ -2323,6 +2323,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = CONFIGURE_STACK_SPACE_SIZE, /* required stack space */ CONFIGURE_MAXIMUM_USER_EXTENSIONS, /* maximum dynamic extensions */ CONFIGURE_MICROSECONDS_PER_TICK, /* microseconds per clock tick */ + 1000 * CONFIGURE_MICROSECONDS_PER_TICK, /* nanoseconds per clock tick */ CONFIGURE_TICKS_PER_TIMESLICE, /* ticks per timeslice quantum */ CONFIGURE_IDLE_TASK_BODY, /* user's IDLE task */ CONFIGURE_IDLE_TASK_STACK_SIZE, /* IDLE task stack size */ diff --git a/cpukit/sapi/include/rtems/config.h b/cpukit/sapi/include/rtems/config.h index 8bc5aea50c..58b350da76 100644 --- a/cpukit/sapi/include/rtems/config.h +++ b/cpukit/sapi/include/rtems/config.h @@ -146,6 +146,13 @@ typedef struct { */ uint32_t microseconds_per_tick; + /** This field specifies the number of nanoseconds which elapse + * between clock ticks. This value is derived from the + * microseconds_per_tick field and provided to avoid calculation at + * run-time. + */ + uint32_t nanoseconds_per_tick; + /** This field specifies the number of ticks in each task's timeslice. */ uint32_t ticks_per_timeslice; @@ -281,7 +288,13 @@ extern rtems_configuration_table Configuration; #define rtems_configuration_get_milliseconds_per_tick() \ (Configuration.microseconds_per_tick / 1000) #define rtems_configuration_get_nanoseconds_per_tick() \ - (Configuration.microseconds_per_tick * 1000) + (Configuration.nanoseconds_per_tick) +#define rtems_configuration_set_microseconds_per_tick( _us ) \ + do { \ + Configuration.microseconds_per_tick = (_us); \ + Configuration.nanoseconds_per_tick = \ + 1000 * Configuration.microseconds_per_tick; \ + } while (0) #define rtems_configuration_get_ticks_per_timeslice() \ (Configuration.ticks_per_timeslice) -- cgit v1.2.3 From 3246b0f8fcbf6e3ae3d7c2a87117f67b79cb1665 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 13 Jun 2012 11:29:53 +0200 Subject: score: New structure TOD_Control Group the global TOD variables (_TOD_Now, _TOD_Uptime, and _TOD_Is_set) in a structure to reduce address loads in _TOD_Tickle_ticks(). --- cpukit/rtems/src/clockgetsecondssinceepoch.c | 2 +- cpukit/rtems/src/clockgettod.c | 2 +- cpukit/rtems/src/clockgettodtimeval.c | 2 +- cpukit/rtems/src/taskwakewhen.c | 2 +- cpukit/rtems/src/timerfirewhen.c | 2 +- cpukit/rtems/src/timerserverfirewhen.c | 2 +- cpukit/score/include/rtems/score/tod.h | 45 +++++++++++++++------------- cpukit/score/src/coretod.c | 6 ++-- cpukit/score/src/coretodget.c | 4 +-- cpukit/score/src/coretodgetuptime.c | 4 +-- cpukit/score/src/coretodset.c | 4 +-- cpukit/score/src/coretodtickle.c | 4 +-- testsuites/sptests/spsize/size.c | 4 +-- 13 files changed, 43 insertions(+), 40 deletions(-) diff --git a/cpukit/rtems/src/clockgetsecondssinceepoch.c b/cpukit/rtems/src/clockgetsecondssinceepoch.c index 040a4070e0..91ca553421 100644 --- a/cpukit/rtems/src/clockgetsecondssinceepoch.c +++ b/cpukit/rtems/src/clockgetsecondssinceepoch.c @@ -28,7 +28,7 @@ rtems_status_code rtems_clock_get_seconds_since_epoch( if ( !the_interval ) return RTEMS_INVALID_ADDRESS; - if ( !_TOD_Is_set ) + if ( !_TOD.is_set ) return RTEMS_NOT_DEFINED; *the_interval = _TOD_Seconds_since_epoch(); diff --git a/cpukit/rtems/src/clockgettod.c b/cpukit/rtems/src/clockgettod.c index b94d0dc118..dd68ec578d 100644 --- a/cpukit/rtems/src/clockgettod.c +++ b/cpukit/rtems/src/clockgettod.c @@ -33,7 +33,7 @@ rtems_status_code rtems_clock_get_tod( if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; - if ( !_TOD_Is_set ) + if ( !_TOD.is_set ) return RTEMS_NOT_DEFINED; /* Obtain the current time */ diff --git a/cpukit/rtems/src/clockgettodtimeval.c b/cpukit/rtems/src/clockgettodtimeval.c index 66eab0b9f4..a3fb49d92e 100644 --- a/cpukit/rtems/src/clockgettodtimeval.c +++ b/cpukit/rtems/src/clockgettodtimeval.c @@ -28,7 +28,7 @@ rtems_status_code rtems_clock_get_tod_timeval( if ( !time ) return RTEMS_INVALID_ADDRESS; - if ( !_TOD_Is_set ) + if ( !_TOD.is_set ) return RTEMS_NOT_DEFINED; _TOD_Get_timeval( time ); diff --git a/cpukit/rtems/src/taskwakewhen.c b/cpukit/rtems/src/taskwakewhen.c index 8043db548d..d181848c91 100644 --- a/cpukit/rtems/src/taskwakewhen.c +++ b/cpukit/rtems/src/taskwakewhen.c @@ -51,7 +51,7 @@ rtems_status_code rtems_task_wake_when( { Watchdog_Interval seconds; - if ( !_TOD_Is_set ) + if ( !_TOD.is_set ) return RTEMS_NOT_DEFINED; if ( !time_buffer ) diff --git a/cpukit/rtems/src/timerfirewhen.c b/cpukit/rtems/src/timerfirewhen.c index b3e1231ef0..df24e2aad3 100644 --- a/cpukit/rtems/src/timerfirewhen.c +++ b/cpukit/rtems/src/timerfirewhen.c @@ -50,7 +50,7 @@ rtems_status_code rtems_timer_fire_when( Objects_Locations location; rtems_interval seconds; - if ( !_TOD_Is_set ) + if ( !_TOD.is_set ) return RTEMS_NOT_DEFINED; if ( !_TOD_Validate( wall_time ) ) diff --git a/cpukit/rtems/src/timerserverfirewhen.c b/cpukit/rtems/src/timerserverfirewhen.c index 2a1172d420..5f029a0d35 100644 --- a/cpukit/rtems/src/timerserverfirewhen.c +++ b/cpukit/rtems/src/timerserverfirewhen.c @@ -55,7 +55,7 @@ rtems_status_code rtems_timer_server_fire_when( if ( !timer_server ) return RTEMS_INCORRECT_STATE; - if ( !_TOD_Is_set ) + if ( !_TOD.is_set ) return RTEMS_NOT_DEFINED; if ( !routine ) diff --git a/cpukit/score/include/rtems/score/tod.h b/cpukit/score/include/rtems/score/tod.h index e9a2e84381..06cc9003dd 100644 --- a/cpukit/score/include/rtems/score/tod.h +++ b/cpukit/score/include/rtems/score/tod.h @@ -123,26 +123,29 @@ extern "C" { /**@{*/ /** - * @brief Is the Time Of Day Set - * - * This is true if the application has set the current - * time of day, and false otherwise. - */ -SCORE_EXTERN bool _TOD_Is_set; - -/** - * @brief Current Time of Day (Timespec) - * - * The following contains the current time of day. - */ -SCORE_EXTERN Timestamp_Control _TOD_Now; - -/** - * @brief Current Time of Day (Timespec) - * - * The following contains the running uptime. - */ -SCORE_EXTERN Timestamp_Control _TOD_Uptime; + * @brief TOD control. + */ +typedef struct { + /** + * @brief Current time of day value. + */ + Timestamp_Control now; + + /** + * @brief System uptime. + */ + Timestamp_Control uptime; + + /** + * @brief Indicates if the time of day is set. + * + * This is true if the application has set the current + * time of day, and false otherwise. + */ + bool is_set; +} TOD_Control; + +SCORE_EXTERN TOD_Control _TOD; /** * @brief Seconds Since RTEMS Epoch @@ -151,7 +154,7 @@ SCORE_EXTERN Timestamp_Control _TOD_Uptime; * January 1, TOD_BASE_YEAR until the current time of day. */ #define _TOD_Seconds_since_epoch() \ - _Timestamp_Get_seconds(&_TOD_Now) + _Timestamp_Get_seconds(&_TOD.now) /** * @brief _TOD_Handler_initialization diff --git a/cpukit/score/src/coretod.c b/cpukit/score/src/coretod.c index 30efa76d79..1784a897a4 100644 --- a/cpukit/score/src/coretod.c +++ b/cpukit/score/src/coretod.c @@ -33,12 +33,12 @@ void _TOD_Handler_initialization(void) { /* POSIX format TOD (timespec) */ - _Timestamp_Set( &_TOD_Now, TOD_SECONDS_1970_THROUGH_1988, 0 ); + _Timestamp_Set( &_TOD.now, TOD_SECONDS_1970_THROUGH_1988, 0 ); /* Uptime (timespec) */ - _Timestamp_Set_to_zero( &_TOD_Uptime ); + _Timestamp_Set_to_zero( &_TOD.uptime ); /* TOD has not been set */ - _TOD_Is_set = false; + _TOD.is_set = false; _TOD_Activate(); } diff --git a/cpukit/score/src/coretodget.c b/cpukit/score/src/coretodget.c index 3e73a8daab..94517e5926 100644 --- a/cpukit/score/src/coretodget.c +++ b/cpukit/score/src/coretodget.c @@ -31,9 +31,9 @@ void _TOD_Get_as_timestamp( /* assume time checked for NULL by caller */ - /* _TOD_Now is the native current time */ + /* _TOD.now is the native current time */ _ISR_Disable( level ); - now = _TOD_Now; + now = _TOD.now; nanoseconds = (*_Watchdog_Nanoseconds_since_tick_handler)(); _ISR_Enable( level ); diff --git a/cpukit/score/src/coretodgetuptime.c b/cpukit/score/src/coretodgetuptime.c index 454252921e..c3c05aed3c 100644 --- a/cpukit/score/src/coretodgetuptime.c +++ b/cpukit/score/src/coretodgetuptime.c @@ -42,9 +42,9 @@ void _TOD_Get_uptime( /* assume time checked for NULL by caller */ - /* _TOD_Uptime is in native timestamp format */ + /* _TOD.uptime is in native timestamp format */ _ISR_Disable( level ); - up = _TOD_Uptime; + up = _TOD.uptime; nanoseconds = (*_Watchdog_Nanoseconds_since_tick_handler)(); _ISR_Enable( level ); diff --git a/cpukit/score/src/coretodset.c b/cpukit/score/src/coretodset.c index e1b86a3976..9708ef9477 100644 --- a/cpukit/score/src/coretodset.c +++ b/cpukit/score/src/coretodset.c @@ -38,8 +38,8 @@ void _TOD_Set_with_timestamp( else _Watchdog_Adjust_seconds( WATCHDOG_FORWARD, seconds_next - seconds_now ); - _TOD_Now = *tod; - _TOD_Is_set = true; + _TOD.now = *tod; + _TOD.is_set = true; _TOD_Activate(); _Thread_Enable_dispatch(); diff --git a/cpukit/score/src/coretodtickle.c b/cpukit/score/src/coretodtickle.c index 25ab6f3408..fbf67fda79 100644 --- a/cpukit/score/src/coretodtickle.c +++ b/cpukit/score/src/coretodtickle.c @@ -44,11 +44,11 @@ void _TOD_Tickle_ticks( void ) _Watchdog_Ticks_since_boot += 1; /* Update the timespec format uptime */ - _Timestamp_Add_to( &_TOD_Uptime, &tick ); + _Timestamp_Add_to( &_TOD.uptime, &tick ); /* we do not care how much the uptime changed */ /* Update the timespec format TOD */ - seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick ); + seconds = _Timestamp_Add_to_at_tick( &_TOD.now, &tick ); while ( seconds ) { _Watchdog_Tickle_seconds(); seconds--; diff --git a/testsuites/sptests/spsize/size.c b/testsuites/sptests/spsize/size.c index cc37288765..529cdd3049 100644 --- a/testsuites/sptests/spsize/size.c +++ b/testsuites/sptests/spsize/size.c @@ -406,8 +406,8 @@ uninitialized = /*timer.h*/ (sizeof _Timer_Information) + -/*tod.h*/ (sizeof _TOD_Now) + - (sizeof _TOD_Uptime) + +/*tod.h*/ (sizeof _TOD.now) + + (sizeof _TOD.uptime) + /*tqdata.h*/ 0 + -- cgit v1.2.3 From c34bb0dcfa8ba1294cd5182349e1ddbe34f81bf4 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 13 Jun 2012 11:39:43 +0200 Subject: score: Fix performance issue for 64-bit timestamps The 64-bit timestamps were introduced to simplify the timestamp calculations. This works well since nearly all operations are additions. The previous _TOD_Tickle_ticks() implementation had a serious performance regression in case of 64-bit timestamps due to the usage of two 64-bit divisions which are quite expensive on some architectures. A new field seconds_trigger in TOD_Control is introduced to trigger the _Watchdog_Tickle_seconds() in _TOD_Tickle_ticks(). This avoids the 64-bit divisions completely and only 32-bit additions are used. --- cpukit/score/include/rtems/score/timestamp.h | 25 --------------------- cpukit/score/include/rtems/score/timestamp64.h | 30 -------------------------- cpukit/score/include/rtems/score/tod.h | 9 ++++++++ cpukit/score/src/coretodset.c | 2 ++ cpukit/score/src/coretodtickle.c | 18 ++++++++++------ 5 files changed, 22 insertions(+), 62 deletions(-) diff --git a/cpukit/score/include/rtems/score/timestamp.h b/cpukit/score/include/rtems/score/timestamp.h index b86090978e..83948b46e1 100644 --- a/cpukit/score/include/rtems/score/timestamp.h +++ b/cpukit/score/include/rtems/score/timestamp.h @@ -193,31 +193,6 @@ extern "C" { _Timestamp64_Add_to( _time, _add ) #endif -/** - * @brief Add to a Timestamp (At Clock Tick) - * - * This routine adds two timestamps. The second argument is added - * to the first. - * - * @node This routine places a special requirement on the addition - * operation. It must return the number of units that the - * seconds field changed as the result of the addition. Since this - * operation is ONLY used as part of processing a clock tick, - * it is generally safe to assume that only one second changed. - * - * @param[in] _time points to the base time to be added to - * @param[in] _add points to the timestamp to add to the first argument - * - * @return This method returns the number of seconds @a time increased by. - */ -#if CPU_TIMESTAMP_USE_STRUCT_TIMESPEC == TRUE - #define _Timestamp_Add_to_at_tick( _time, _add ) \ - _Timespec_Add_to( _time, _add ) -#else - #define _Timestamp_Add_to_at_tick( _time, _add ) \ - _Timestamp64_Add_to_at_tick( _time, _add ) -#endif - /** * @brief Convert Timestamp to Number of Ticks * diff --git a/cpukit/score/include/rtems/score/timestamp64.h b/cpukit/score/include/rtems/score/timestamp64.h index 08d3ac7ecd..1c1ea2c90c 100644 --- a/cpukit/score/include/rtems/score/timestamp64.h +++ b/cpukit/score/include/rtems/score/timestamp64.h @@ -208,36 +208,6 @@ static inline void _Timestamp64_implementation_Add_to( ); #endif -/** - * @brief Add to a Timestamp (At Clock Tick) - * - * This routine adds two timestamps. The second argument is added - * to the first. - * - * @node This routine places a special requirement on the addition - * operation. It must return the number of units that the - * seconds field changed as the result of the addition. Since this - * operation is ONLY used as part of processing a clock tick, - * it is generally safe to assume that only one second changed. - * - * @param[in] _time points to the base time to be added to - * @param[in] _add points to the timestamp to add to the first argument - * - * @return This method returns the number of seconds @a time increased by. - */ -static inline uint32_t _Timestamp64_Add_to_at_tick( - Timestamp64_Control *_time, - const Timestamp64_Control *_add -) -{ - Timestamp64_Control _start = *_time / 1000000000L; - *_time += *_add; - if ( ((*_time) / 1000000000L) != _start ) { - return 1; - } - return 0; -} - /** * @brief Convert Timestamp to Number of Ticks * diff --git a/cpukit/score/include/rtems/score/tod.h b/cpukit/score/include/rtems/score/tod.h index 06cc9003dd..cfb0fe776d 100644 --- a/cpukit/score/include/rtems/score/tod.h +++ b/cpukit/score/include/rtems/score/tod.h @@ -136,6 +136,15 @@ typedef struct { */ Timestamp_Control uptime; + /** + * @brief Time of day seconds trigger. + * + * This value specifies the nanoseconds since the last time of day second. + * It is updated and evaluated in _TOD_Tickle_ticks(). It is set in + * _TOD_Set_with_timestamp(). + */ + uint32_t seconds_trigger; + /** * @brief Indicates if the time of day is set. * diff --git a/cpukit/score/src/coretodset.c b/cpukit/score/src/coretodset.c index 9708ef9477..8b0928af60 100644 --- a/cpukit/score/src/coretodset.c +++ b/cpukit/score/src/coretodset.c @@ -25,6 +25,7 @@ void _TOD_Set_with_timestamp( const Timestamp_Control *tod ) { + uint32_t nanoseconds = _Timestamp_Get_nanoseconds( tod ); Watchdog_Interval seconds_next = _Timestamp_Get_seconds( tod ); Watchdog_Interval seconds_now; @@ -39,6 +40,7 @@ void _TOD_Set_with_timestamp( _Watchdog_Adjust_seconds( WATCHDOG_FORWARD, seconds_next - seconds_now ); _TOD.now = *tod; + _TOD.seconds_trigger = nanoseconds; _TOD.is_set = true; _TOD_Activate(); diff --git a/cpukit/score/src/coretodtickle.c b/cpukit/score/src/coretodtickle.c index fbf67fda79..d0412f85d4 100644 --- a/cpukit/score/src/coretodtickle.c +++ b/cpukit/score/src/coretodtickle.c @@ -35,23 +35,27 @@ void _TOD_Tickle_ticks( void ) { Timestamp_Control tick; - uint32_t seconds; + uint32_t nanoseconds_per_tick; + + nanoseconds_per_tick = rtems_configuration_get_nanoseconds_per_tick(); /* Convert the tick quantum to a timestamp */ - _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() ); + _Timestamp_Set( &tick, 0, nanoseconds_per_tick ); /* Update the counter of ticks since boot */ _Watchdog_Ticks_since_boot += 1; - /* Update the timespec format uptime */ + /* Update the uptime */ _Timestamp_Add_to( &_TOD.uptime, &tick ); /* we do not care how much the uptime changed */ - /* Update the timespec format TOD */ - seconds = _Timestamp_Add_to_at_tick( &_TOD.now, &tick ); - while ( seconds ) { + /* Update the current TOD */ + _Timestamp_Add_to( &_TOD.now, &tick ); + + _TOD.seconds_trigger += nanoseconds_per_tick; + if ( _TOD.seconds_trigger >= 1000000000UL ) { + _TOD.seconds_trigger -= 1000000000UL; _Watchdog_Tickle_seconds(); - seconds--; } } -- cgit v1.2.3