History

[PATCH] ppc64: cleanup iseries runlight support

The iseries has a bar graph on the front panel that shows how busy it is. The operating system sets and clears a bit in the CTRL register to control it. Instead of going to the complexity of using a thread info bit, just set and clear it in the idle loop. Also create two helper functions, ppc64_runlatch_on and ppc64_runlatch_off. Finally don't use the short form of the SPR defines.

Anton Blanchard committed 21 years ago

Commit 6dc2f0c1 parent 79f12487 files · +33 −36Browse files

Showing the changes to include (2 of 7 files). Show all

Unified · Split

2 files
  1. include/asm-ppc64/processor.h +21 −6
  2. include/asm-ppc64/thread_info.h +2 −2
include/asm-ppc64/processor.h+21−6
@@ -164,6 +164,9 @@ · 163 unmodified lines
164164 #define SPRN_USIA 0x3AB /* User Sampled Instruction Address Register */
165165 #define SPRN_XER 0x001 /* Fixed Point Exception Register */
166166 #define SPRN_VRSAVE 0x100 /* Vector save */
167+#define SPRN_CTRLF 0x088
168+#define SPRN_CTRLT 0x098
169+#define CTRL_RUNLATCH 0x1
167170
168171 /* Performance monitor SPRs */
169172 #define SPRN_SIAR 780
@@ -279,12 +282,6 @@ · 109 unmodified lines
279282 #define XGLUE(a,b) a##b
280283 #define GLUE(a,b) XGLUE(a,b)
281284
282−/* iSeries CTRL register (for runlatch) */
283−
284−#define CTRLT 0x098
285−#define CTRLF 0x088
286−#define RUNLATCH 0x0001
287−
288285 #ifdef __ASSEMBLY__
289286
290287 #define _GLOBAL(name) \
@@ -499,6 +496,24 @@ static inline void prefetchw(const void *x) · 208 unmodified lines
499496
500497 #define HAVE_ARCH_PICK_MMAP_LAYOUT
501498
499+static inline void ppc64_runlatch_on(void)
500+{
501+ unsigned long ctrl;
502+
503+ ctrl = mfspr(SPRN_CTRLF);
504+ ctrl |= CTRL_RUNLATCH;
505+ mtspr(SPRN_CTRLT, ctrl);
506+}
507+
508+static inline void ppc64_runlatch_off(void)
509+{
510+ unsigned long ctrl;
511+
512+ ctrl = mfspr(SPRN_CTRLF);
513+ ctrl &= ~CTRL_RUNLATCH;
514+ mtspr(SPRN_CTRLT, ctrl);
515+}
516+
502517 #endif /* __KERNEL__ */
503518
504519 #endif /* __ASSEMBLY__ */
include/asm-ppc64/thread_info.h+2−2
@@ -96,7 +96,7 @@ static inline struct thread_info *current_thread_info(void) · 95 unmodified lines
9696 #define TIF_POLLING_NRFLAG 4 /* true if poll_idle() is polling
9797 TIF_NEED_RESCHED */
9898 #define TIF_32BIT 5 /* 32 bit binary */
99−#define TIF_RUN_LIGHT 6 /* iSeries run light */
99+/* #define SPARE 6 */
100100 #define TIF_ABI_PENDING 7 /* 32/64 bit switch needed */
101101 #define TIF_SYSCALL_AUDIT 8 /* syscall auditing active */
102102 #define TIF_SINGLESTEP 9 /* singlestepping active */
@@ -110,7 +110,7 @@ static inline struct thread_info *current_thread_info(void) · 7 unmodified lines
110110 #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
111111 #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
112112 #define _TIF_32BIT (1<<TIF_32BIT)
113−#define _TIF_RUN_LIGHT (1<<TIF_RUN_LIGHT)
113+/* #define _SPARE (1<<SPARE) */
114114 #define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING)
115115 #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT)
116116 #define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP)