summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDoug Gilbert <dgilbert@us.ibm.com>2017-01-11 11:16:44 -0600
committerSachin Gupta <sgupta2m@in.ibm.com>2017-04-19 12:20:39 -0400
commit9699f70379fcf950e7afc9809bbd3c36615c8d6c (patch)
treed0a271df5a6a503ef83e2bd91f75ed7a984decb8
parentf78d7ec010821c85ec8dbbc58081aebd05e28cdb (diff)
downloadtalos-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>
-rw-r--r--src/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h4
-rw-r--r--src/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c5
-rw-r--r--src/import/chips/p9/procedures/ppe/pk/kernel/pk_kernel.h4
-rw-r--r--src/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_irq.h6
-rw-r--r--src/import/chips/p9/procedures/ppe/pk/trace/pk_trace.h4
-rw-r--r--src/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c7
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,
OpenPOWER on IntegriCloud