summaryrefslogtreecommitdiffstats
path: root/import/chips/p9/procedures/ppe
diff options
context:
space:
mode:
authorDoug Gilbert <dgilbert@us.ibm.com>2017-01-11 11:16:44 -0600
committerJoshua Hunsberger <jahunsbe@us.ibm.com>2017-10-23 17:24:27 -0500
commit97283ea19f1a3890067759b0c8317cc7e5f5a3d9 (patch)
treeb6fe2f854bfaea7b4018135a1980c4d9372168eb /import/chips/p9/procedures/ppe
parent71c1ab3670cd08dbe37524131c599027065d0b2b (diff)
downloadtalos-hcode-97283ea19f1a3890067759b0c8317cc7e5f5a3d9.tar.gz
talos-hcode-97283ea19f1a3890067759b0c8317cc7e5f5a3d9.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>
Diffstat (limited to 'import/chips/p9/procedures/ppe')
-rw-r--r--import/chips/p9/procedures/ppe/pk/kernel/pk_api.h4
-rw-r--r--import/chips/p9/procedures/ppe/pk/kernel/pk_init.c5
-rw-r--r--import/chips/p9/procedures/ppe/pk/kernel/pk_kernel.h4
-rw-r--r--import/chips/p9/procedures/ppe/pk/ppe42/ppe42_irq.h4
-rw-r--r--import/chips/p9/procedures/ppe/pk/trace/pk_trace.h2
-rw-r--r--import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c5
6 files changed, 14 insertions, 10 deletions
diff --git a/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h b/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h
index 26b3d088..48405df7 100644
--- a/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h
+++ b/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h
@@ -966,7 +966,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/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c b/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c
index f2cf1a15..07e3d282 100644
--- a/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c
+++ b/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/import/chips/p9/procedures/ppe/pk/kernel/pk_kernel.h b/import/chips/p9/procedures/ppe/pk/kernel/pk_kernel.h
index dc8c0565..9db8cdf1 100644
--- a/import/chips/p9/procedures/ppe/pk/kernel/pk_kernel.h
+++ b/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/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_irq.h b/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_irq.h
index 58571a3f..8b5631b6 100644
--- a/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_irq.h
+++ b/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_irq.h
@@ -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/import/chips/p9/procedures/ppe/pk/trace/pk_trace.h b/import/chips/p9/procedures/ppe/pk/trace/pk_trace.h
index 9c34c5d6..67fbe7aa 100644
--- a/import/chips/p9/procedures/ppe/pk/trace/pk_trace.h
+++ b/import/chips/p9/procedures/ppe/pk/trace/pk_trace.h
@@ -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/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c b/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c
index 35e39f9d..9f87bc1f 100644
--- a/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c
+++ b/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c
@@ -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