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
164#define SPRN_USIA 0x3AB /* User Sampled Instruction Address Register */164#define SPRN_USIA 0x3AB /* User Sampled Instruction Address Register */
165#define SPRN_XER 0x001 /* Fixed Point Exception Register */165#define SPRN_XER 0x001 /* Fixed Point Exception Register */
166#define SPRN_VRSAVE 0x100 /* Vector save */166#define SPRN_VRSAVE 0x100 /* Vector save */
167#define SPRN_CTRLF 0x088
168#define SPRN_CTRLT 0x098
169#define CTRL_RUNLATCH 0x1
167 170
168/* Performance monitor SPRs */171/* Performance monitor SPRs */
169#define SPRN_SIAR 780172#define SPRN_SIAR 780
@@ -279,12 +282,6 @@ · 109 unmodified lines
279#define XGLUE(a,b) a##b282#define XGLUE(a,b) a##b
280#define GLUE(a,b) XGLUE(a,b)283#define GLUE(a,b) XGLUE(a,b)
281 284
282/* iSeries CTRL register (for runlatch) */
283
284#define CTRLT 0x098
285#define CTRLF 0x088
286#define RUNLATCH 0x0001
287
288#ifdef __ASSEMBLY__285#ifdef __ASSEMBLY__
289 286
290#define _GLOBAL(name) \287#define _GLOBAL(name) \
@@ -499,6 +496,24 @@ static inline void prefetchw(const void *x) · 208 unmodified lines
499 496
500#define HAVE_ARCH_PICK_MMAP_LAYOUT497#define HAVE_ARCH_PICK_MMAP_LAYOUT
501 498
499static 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
508static 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
502#endif /* __KERNEL__ */517#endif /* __KERNEL__ */
503 518
504#endif /* __ASSEMBLY__ */519#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
96#define TIF_POLLING_NRFLAG 4 /* true if poll_idle() is polling96#define TIF_POLLING_NRFLAG 4 /* true if poll_idle() is polling
97 TIF_NEED_RESCHED */97 TIF_NEED_RESCHED */
98#define TIF_32BIT 5 /* 32 bit binary */98#define TIF_32BIT 5 /* 32 bit binary */
99#define TIF_RUN_LIGHT 6 /* iSeries run light */99/* #define SPARE 6 */
100#define TIF_ABI_PENDING 7 /* 32/64 bit switch needed */100#define TIF_ABI_PENDING 7 /* 32/64 bit switch needed */
101#define TIF_SYSCALL_AUDIT 8 /* syscall auditing active */101#define TIF_SYSCALL_AUDIT 8 /* syscall auditing active */
102#define TIF_SINGLESTEP 9 /* singlestepping active */102#define TIF_SINGLESTEP 9 /* singlestepping active */
@@ -110,7 +110,7 @@ static inline struct thread_info *current_thread_info(void) · 7 unmodified lines
110#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)110#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
111#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)111#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
112#define _TIF_32BIT (1<<TIF_32BIT)112#define _TIF_32BIT (1<<TIF_32BIT)
113#define _TIF_RUN_LIGHT (1<<TIF_RUN_LIGHT)113/* #define _SPARE (1<<SPARE) */
114#define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING)114#define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING)
115#define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT)115#define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT)
116#define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP)116#define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP)