regs.int_parm = CPU_MF_INT_SF_PRA;
        sde_regs = (struct perf_sf_sde_regs *) ®s.int_parm_long;
 
-       regs.psw.addr = sfr->basic.ia;
-       if (sfr->basic.T)
-               regs.psw.mask |= PSW_MASK_DAT;
-       if (sfr->basic.W)
-               regs.psw.mask |= PSW_MASK_WAIT;
-       if (sfr->basic.P)
-               regs.psw.mask |= PSW_MASK_PSTATE;
-       switch (sfr->basic.AS) {
-       case 0x0:
-               regs.psw.mask |= PSW_ASC_PRIMARY;
-               break;
-       case 0x1:
-               regs.psw.mask |= PSW_ASC_ACCREG;
-               break;
-       case 0x2:
-               regs.psw.mask |= PSW_ASC_SECONDARY;
-               break;
-       case 0x3:
-               regs.psw.mask |= PSW_ASC_HOME;
-               break;
-       }
+       psw_bits(regs.psw).ia = sfr->basic.ia;
+       psw_bits(regs.psw).t  = sfr->basic.T;
+       psw_bits(regs.psw).w  = sfr->basic.W;
+       psw_bits(regs.psw).p  = sfr->basic.P;
+       psw_bits(regs.psw).as = sfr->basic.AS;
 
        /*
         * A non-zero guest program parameter indicates a guest