diff options
| author | Doug Gilbert <dgilbert@us.ibm.com> | 2017-06-20 12:32:12 -0500 |
|---|---|---|
| committer | Joshua Hunsberger <jahunsbe@us.ibm.com> | 2017-10-23 17:57:22 -0500 |
| commit | 745b8dd66aa3dc2c651f321b3a06461164e8a47f (patch) | |
| tree | b38e8e3ddbb3e29982f04eb873648b5f745a5907 | |
| parent | 8f64384a65f4d4100e73d13d31128f0c624425d3 (diff) | |
| download | talos-hcode-745b8dd66aa3dc2c651f321b3a06461164e8a47f.tar.gz talos-hcode-745b8dd66aa3dc2c651f321b3a06461164e8a47f.zip | |
PK trace fixes and ppe42 optimizations
Change-Id: Icc162f3511a965490885dc31615fd552ec430a36
RTC: 167247
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/42141
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com>
Reviewed-by: BRIAN D. VICTOR <brian.d.victor1@ibm.com>
Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
5 files changed, 18 insertions, 15 deletions
diff --git a/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_msr.h b/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_msr.h index 619f448b..60d3e21c 100644 --- a/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_msr.h +++ b/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_msr.h @@ -74,8 +74,8 @@ /// Move From MSR #define mfmsr() \ - ({volatile uint32_t __msr; \ - asm volatile ("mfmsr %0" : "=r" (__msr)); \ + ({uint32_t __msr; \ + asm volatile ("mfmsr %0" : "=r" (__msr) : : "memory"); \ __msr;}) diff --git a/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_spr.h b/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_spr.h index e1506024..96215c7b 100644 --- a/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_spr.h +++ b/import/chips/p9/procedures/ppe/pk/ppe42/ppe42_spr.h @@ -134,8 +134,8 @@ typedef union /// Note that \a sprn must be a compile-time constant. #define mfspr(sprn) \ - ({volatile uint32_t __value; \ - asm volatile ("mfspr %0, %1" : "=r" (__value) : "i" (sprn)); \ + ({uint32_t __value; \ + asm volatile ("mfspr %0, %1" : "=r" (__value) : "i" (sprn) : "memory"); \ __value;}) @@ -144,8 +144,8 @@ typedef union /// Note that \a sprn must be a compile-time constant. #define mtspr(sprn, value) \ - ({volatile uint32_t __value = (value); \ - asm volatile ("mtspr %0, %1" : : "i" (sprn), "r" (__value)); \ + ({uint32_t __value = (value); \ + asm volatile ("mtspr %0, %1" : : "i" (sprn), "r" (__value) : "memory"); \ }) diff --git a/import/chips/p9/procedures/ppe/pk/trace/pk_trace_big.c b/import/chips/p9/procedures/ppe/pk/trace/pk_trace_big.c index 06fa2504..70dd6ddb 100644 --- a/import/chips/p9/procedures/ppe/pk/trace/pk_trace_big.c +++ b/import/chips/p9/procedures/ppe/pk/trace/pk_trace_big.c @@ -34,7 +34,7 @@ #include "pk.h" #include "pk_trace.h" -#if (PK_TRACE_SUPPORT && PK_TIMER_SUPPORT) +#if (PK_TRACE_SUPPORT) void pk_trace_big(uint32_t i_hash_and_count, uint64_t i_parm1, uint64_t i_parm2) { diff --git a/import/chips/p9/procedures/ppe/pk/trace/pk_trace_binary.c b/import/chips/p9/procedures/ppe/pk/trace/pk_trace_binary.c index ac731491..2e0d2764 100644 --- a/import/chips/p9/procedures/ppe/pk/trace/pk_trace_binary.c +++ b/import/chips/p9/procedures/ppe/pk/trace/pk_trace_binary.c @@ -33,7 +33,7 @@ #include "pk.h" #include "pk_trace.h" -#if (PK_TRACE_SUPPORT && PK_TIMER_SUPPORT) +#if (PK_TRACE_SUPPORT) void pk_trace_binary(uint32_t i_hash_and_size, void* bufp) { PkTraceBinary footer; 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 9f87bc1f..6ed84545 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 @@ -36,9 +36,10 @@ #include "pk.h" #include "pk_trace.h" -void pk_trace_timer_callback(void* arg); -#if (PK_TRACE_SUPPORT && PK_TIMER_SUPPORT) +#if (PK_TRACE_SUPPORT) +#if (PK_TIMER_SUPPORT) +void pk_trace_timer_callback(void* arg); extern PkTimer g_pk_trace_timer __attribute__((section (".sdata"))); //Static initialization of the trace timer @@ -49,6 +50,7 @@ PkTimer g_pk_trace_timer __attribute__ ((section (".sdata"))) = .callback = pk_trace_timer_callback, .arg = 0, }; +#endif //Static initialization of the pk trace buffer PkTraceBuffer g_pk_trace_buf __attribute__ ((section (".sdata"))) = @@ -56,10 +58,11 @@ PkTraceBuffer g_pk_trace_buf __attribute__ ((section (".sdata"))) = .version = PK_TRACE_VERSION, .image_str = PPE_IMG_STRING, .hash_prefix = PK_TRACE_HASH_PREFIX, - .partial_trace_hash = trace_ppe_hash("PARTIAL TRACE ENTRY. HASH_ID = %d", PK_TRACE_HASH_PREFIX), + .partial_trace_hash = + trace_ppe_hash("PARTIAL TRACE ENTRY. HASH_ID = %d", PK_TRACE_HASH_PREFIX), .size = PK_TRACE_SZ, .max_time_change = PK_TRACE_MTBT, - .hz = 500000000, //default value. Actual value is set in pk_init.c + .hz = 500000000, //default. Actual is set in pk_init.c .time_adj64 = 0, .state.word64 = 0, .cb = {0} @@ -124,7 +127,7 @@ void pk_trace_tiny(uint32_t i_parm) pk_critical_section_exit(&ctx); } - +#if (PK_TIMER_SUPPORT) // This function is called periodically in order to ensure that the max ticks // between trace entries is no more than what will fit inside a 32bit value. #ifndef PK_TRACE_TIMER_OUTPUT @@ -151,5 +154,5 @@ void pk_trace_set_timebase(PkTimebase timebase) { g_pk_trace_buf.time_adj64 = timebase - pk_timebase_get(); } - -#endif +#endif // PK_TIMER_SUPPORT +#endif // PK_TRACE_SUPPORT |

