Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 356369
b: refs/heads/master
c: 13e7a8e
h: refs/heads/master
i:
  356367: 61a9c37
v: v3
  • Loading branch information
Haren Myneni authored and Benjamin Herrenschmidt committed Jan 10, 2013
1 parent 7fae75b commit b37bffa
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 92779245599bb3d7fb48066b11c4bfd6aa477198
refs/heads/master: 13e7a8e846c2ea38a552b986ea49332f965bbb7a
37 changes: 37 additions & 0 deletions trunk/arch/powerpc/include/asm/exception-64s.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,43 @@
#define RESTORE_LR(reg, area)
#endif

/*
* PPR save/restore macros used in exceptions_64s.S
* Used for P7 or later processors
*/
#define SAVE_PPR(area, ra, rb) \
BEGIN_FTR_SECTION_NESTED(940) \
ld ra,PACACURRENT(r13); \
ld rb,area+EX_PPR(r13); /* Read PPR from paca */ \
std rb,TASKTHREADPPR(ra); \
END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,940)

#define RESTORE_PPR_PACA(area, ra) \
BEGIN_FTR_SECTION_NESTED(941) \
ld ra,area+EX_PPR(r13); \
mtspr SPRN_PPR,ra; \
END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,941)

/*
* Increase the priority on systems where PPR save/restore is not
* implemented/ supported.
*/
#define HMT_MEDIUM_PPR_DISCARD \
BEGIN_FTR_SECTION_NESTED(942) \
HMT_MEDIUM; \
END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,0,942) /*non P7*/

/*
* Save PPR in paca whenever some register is available to use.
* Then increase the priority.
*/
#define HMT_MEDIUM_PPR_SAVE(area, ra) \
BEGIN_FTR_SECTION_NESTED(943) \
mfspr ra,SPRN_PPR; \
std ra,area+EX_PPR(r13); \
HMT_MEDIUM; \
END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,943)

#define __EXCEPTION_PROLOG_1(area, extra, vec) \
GET_PACA(r13); \
std r9,area+EX_R9(r13); /* save r9 - r12 */ \
Expand Down
25 changes: 25 additions & 0 deletions trunk/arch/powerpc/include/asm/ppc_asm.h
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,31 @@ END_FTR_SECTION_IFCLR(CPU_FTR_601)
FTR_SECTION_ELSE_NESTED(848); \
mtocrf (FXM), RS; \
ALT_FTR_SECTION_END_NESTED_IFCLR(CPU_FTR_NOEXECUTE, 848)

/*
* PPR restore macros used in entry_64.S
* Used for P7 or later processors
*/
#define HMT_MEDIUM_LOW_HAS_PPR \
BEGIN_FTR_SECTION_NESTED(944) \
HMT_MEDIUM_LOW; \
END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,944)

#define SET_DEFAULT_THREAD_PPR(ra, rb) \
BEGIN_FTR_SECTION_NESTED(945) \
lis ra,INIT_PPR@highest; /* default ppr=3 */ \
ld rb,PACACURRENT(r13); \
sldi ra,ra,32; /* 11- 13 bits are used for ppr */ \
std ra,TASKTHREADPPR(rb); \
END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,945)

#define RESTORE_PPR(ra, rb) \
BEGIN_FTR_SECTION_NESTED(946) \
ld ra,PACACURRENT(r13); \
ld rb,TASKTHREADPPR(ra); \
mtspr SPRN_PPR,rb; /* Restore PPR */ \
END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,946)

#endif

/*
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/powerpc/include/asm/reg.h
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,7 @@
#define SPRN_DBAT6U 0x23C /* Data BAT 6 Upper Register */
#define SPRN_DBAT7L 0x23F /* Data BAT 7 Lower Register */
#define SPRN_DBAT7U 0x23E /* Data BAT 7 Upper Register */
#define SPRN_PPR 0x380 /* SMT Thread status Register */

#define SPRN_DEC 0x016 /* Decrement Register */
#define SPRN_DER 0x095 /* Debug Enable Regsiter */
Expand Down

0 comments on commit b37bffa

Please sign in to comment.