#define   MMCR0_PMXE   0x04000000UL /* performance monitor exception enable */
 #define   MMCR0_FCECE  0x02000000UL /* freeze ctrs on enabled cond or event */
 #define   MMCR0_TBEE   0x00400000UL /* time base exception enable */
+#define   MMCR0_BHRBA  0x00200000UL /* BHRB Access allowed in userspace */
 #define   MMCR0_EBE    0x00100000UL /* Event based branch enable */
 #define   MMCR0_PMCC   0x000c0000UL /* PMC control */
 #define   MMCR0_PMCC_U6        0x00080000UL /* PMC1-6 are R/W by user (PR) */
 
 #define MMCR0_FC56             0
 #define MMCR0_PMAO             0
 #define MMCR0_EBE              0
+#define MMCR0_BHRBA            0
 #define MMCR0_PMCC             0
 #define MMCR0_PMCC_U6          0
 
        if (!ebb)
                goto out;
 
-       /* Enable EBB and read/write to all 6 PMCs for userspace */
-       mmcr0 |= MMCR0_EBE | MMCR0_PMCC_U6;
+       /* Enable EBB and read/write to all 6 PMCs and BHRB for userspace */
+       mmcr0 |= MMCR0_EBE | MMCR0_BHRBA | MMCR0_PMCC_U6;
 
        /*
         * Add any bits from the user MMCR0, FC or PMAO. This is compatible
                }
 
                /*
-                * Set the 'freeze counters' bit, clear EBE/PMCC/PMAO/FC56.
+                * Set the 'freeze counters' bit, clear EBE/BHRBA/PMCC/PMAO/FC56
                 */
                val  = mmcr0 = mfspr(SPRN_MMCR0);
                val |= MMCR0_FC;
-               val &= ~(MMCR0_EBE | MMCR0_PMCC | MMCR0_PMAO | MMCR0_FC56);
+               val &= ~(MMCR0_EBE | MMCR0_BHRBA | MMCR0_PMCC | MMCR0_PMAO |
+                        MMCR0_FC56);
 
                /*
                 * The barrier is to make sure the mtspr has been