| 123456789101112131415161718192021222324252627282930313233343536373839 |
- #ifndef _SELFTESTS_POWERPC_PMU_EBB_LMR_H
- #define _SELFTESTS_POWERPC_PMU_EBB_LMR_H
- #include "reg.h"
- #ifndef PPC_FEATURE2_ARCH_3_00
- #define PPC_FEATURE2_ARCH_3_00 0x00800000
- #endif
- #define lmr_is_supported() have_hwcap2(PPC_FEATURE2_ARCH_3_00)
- static inline void ebb_lmr_reset(void)
- {
- unsigned long bescr = mfspr(SPRN_BESCR);
- bescr &= ~(BESCR_LMEO);
- bescr |= BESCR_LME;
- mtspr(SPRN_BESCR, bescr);
- }
- #define LDMX(t, a, b)\
- (0x7c00026a | \
- (((t) & 0x1f) << 21) | \
- (((a) & 0x1f) << 16) | \
- (((b) & 0x1f) << 11))
- static inline unsigned long ldmx(unsigned long address)
- {
- unsigned long ret;
- asm volatile ("mr 9, %1\r\n"
- ".long " __stringify(LDMX(9, 0, 9)) "\r\n"
- "mr %0, 9\r\n":"=r"(ret)
- :"r"(address)
- :"r9");
- return ret;
- }
- #endif
|