diff options
author | Doug Gilbert <dgilbert@us.ibm.com> | 2017-01-11 11:16:44 -0600 |
---|---|---|
committer | Sachin Gupta <sgupta2m@in.ibm.com> | 2017-04-19 12:20:39 -0400 |
commit | 9699f70379fcf950e7afc9809bbd3c36615c8d6c (patch) | |
tree | d0a271df5a6a503ef83e2bd91f75ed7a984decb8 | |
parent | f78d7ec010821c85ec8dbbc58081aebd05e28cdb (diff) | |
download | talos-sbe-9699f70379fcf950e7afc9809bbd3c36615c8d6c.tar.gz talos-sbe-9699f70379fcf950e7afc9809bbd3c36615c8d6c.zip |
PK move global data to .sdata/.sbss sections to reduce code size
Change-Id: Iec504dba9dd8f92b4d633a19425fcd1800ddb783
RTC:167181
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/34750
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com>
Reviewed-by: ASHISH A. MORE <ashish.more@in.ibm.com>
Reviewed-by: YUE DU <daviddu@us.ibm.com>
Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/34759
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
6 files changed, 17 insertions, 13 deletions
diff --git a/src/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h b/src/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h index 4680f612..1af8a77a 100644 --- a/src/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h +++ b/src/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h @@ -973,7 +973,9 @@ pk_bh_schedule(PkBottomHalf* bottom_half) } #define PK_BH_STATIC_CREATE(bh_name, handler, arg) \ - PkBottomHalf bh_name = PK_BH_INIT(handler, arg) + PkBottomHalf bh_name __attribute__((section (".sdata"))) = \ + PK_BH_INIT(handler, arg) + //Trace function prototypes diff --git a/src/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c b/src/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c index e965c87b..f7ee9b8c 100644 --- a/src/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c +++ b/src/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c @@ -111,6 +111,9 @@ void pk_set_timebase_rshift(uint32_t timebase_freq_hz) // variables. In debugging sessions using RAM-resident PK images it is // assumed that the processor may be reset at any time, so we always need to // reset everything at initialization. +#if PK_TRACE_SUPPORT + extern PkTimer g_pk_trace_timer __attribute__((section (".sdata"))); +#endif int pk_initialize(PkAddress kernel_stack, @@ -157,8 +160,6 @@ pk_initialize(PkAddress kernel_stack, __pk_time_queue.next_timeout = PK_TIMEBASE_MAX; #if PK_TRACE_SUPPORT - extern PkTimer g_pk_trace_timer; - extern PkTraceBuffer g_pk_trace_buf; //set the trace timebase HZ g_pk_trace_buf.hz = timebase_frequency_hz; diff --git a/src/import/chips/p9/procedures/ppe/pk/kernel/pk_kernel.h b/src/import/chips/p9/procedures/ppe/pk/kernel/pk_kernel.h index fbcba39f..1e8bcf73 100644 --- a/src/import/chips/p9/procedures/ppe/pk/kernel/pk_kernel.h +++ b/src/import/chips/p9/procedures/ppe/pk/kernel/pk_kernel.h @@ -167,7 +167,7 @@ size_t __pk_kernel_stack_size; UNLESS__PK_CORE_C__(extern) volatile -PkThread* __pk_priority_map[PK_THREADS + 1]; +PkThread* __pk_priority_map[PK_THREADS + 1] __attribute__ ((section (".sdata"))); /// The PK time queue structure /// @@ -205,7 +205,7 @@ typedef struct } PkTimeQueue; UNLESS__PK_CORE_C__(extern) -PkTimeQueue __pk_time_queue; +PkTimeQueue __pk_time_queue __attribute__ ((section (".sdata"))); /// Return a pointer to the PkThread object of the currently running thread, /// or NULL (0) if PK is idle or has not been started. diff --git a/src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_irq.h b/src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_irq.h index 9b6f3f81..ae899359 100644 --- a/src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_irq.h +++ b/src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_irq.h @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2016 */ +/* Contributors Listed Below - COPYRIGHT 2015,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -204,7 +204,7 @@ typedef struct }; #define EXTERNAL_IRQ_TABLE_START \ - Ppe42IrqHandler __ppe42_irq_handlers[EXTERNAL_IRQS + 1] = \ + Ppe42IrqHandler __ppe42_irq_handlers[EXTERNAL_IRQS + 1] __attribute__((section (".sdata"))) = \ { #else @@ -220,7 +220,7 @@ typedef struct #endif /*STATIC_IRQ_TABLE*/ /// Interrupt handlers for real (implemented interrupts) plus one for the phantom interrupt handler -extern Ppe42IrqHandler __ppe42_irq_handlers[EXTERNAL_IRQS + 1]; +extern Ppe42IrqHandler __ppe42_irq_handlers[EXTERNAL_IRQS + 1] __attribute__((section (".sdata"))); /// The 'phantom interrupt' handler diff --git a/src/import/chips/p9/procedures/ppe/pk/trace/pk_trace.h b/src/import/chips/p9/procedures/ppe/pk/trace/pk_trace.h index 318ffe96..3fd908be 100644 --- a/src/import/chips/p9/procedures/ppe/pk/trace/pk_trace.h +++ b/src/import/chips/p9/procedures/ppe/pk/trace/pk_trace.h @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2016 */ +/* Contributors Listed Below - COPYRIGHT 2015,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -295,7 +295,7 @@ typedef struct uint8_t cb[PK_TRACE_SZ]; } PkTraceBuffer; //pk_trace_buffer_t; -extern PkTraceBuffer g_pk_trace_buf; +extern PkTraceBuffer g_pk_trace_buf __attribute__((section (".sdata"))); #ifdef PK_TRACE_BUFFER_WRAP_MARKER extern uint32_t G_wrap_mask; diff --git a/src/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c b/src/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c index f48c7f75..2f510b09 100644 --- a/src/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c +++ b/src/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2016 */ +/* Contributors Listed Below - COPYRIGHT 2015,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -39,9 +39,10 @@ void pk_trace_timer_callback(void* arg); #if (PK_TRACE_SUPPORT && PK_TIMER_SUPPORT) +extern PkTimer g_pk_trace_timer __attribute__((section (".sdata"))); //Static initialization of the trace timer -PkTimer g_pk_trace_timer = +PkTimer g_pk_trace_timer __attribute__ ((section (".sdata"))) = { .deque = PK_DEQUE_ELEMENT_INIT(), .timeout = 0, @@ -50,7 +51,7 @@ PkTimer g_pk_trace_timer = }; //Static initialization of the pk trace buffer -PkTraceBuffer g_pk_trace_buf = +PkTraceBuffer g_pk_trace_buf __attribute__ ((section (".sdata"))) = { .version = PK_TRACE_VERSION, .image_str = PPE_IMG_STRING, |