#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