version 1.14, 2007/10/17 11:33:55 |
version 1.15, 2007/10/17 14:54:30 |
|
|
else |
else |
msg = p5fn[ind].name; |
msg = p5fn[ind].name; |
snprintf(buf, sizeof(buf), "%c%c%c %02x %s", |
snprintf(buf, sizeof(buf), "%c%c%c %02x %s", |
sel & PCTR_P5_C ? 'c' : '-', |
sel & P5CTR_C ? 'c' : '-', |
sel & PCTR_P5_U ? 'u' : '-', |
sel & P5CTR_U ? 'u' : '-', |
sel & PCTR_P5_K ? 'k' : '-', |
sel & P5CTR_K ? 'k' : '-', |
fn, msg); |
fn, msg); |
break; |
break; |
case CPU_P6: |
case CPU_P6: |
|
|
msg = cfnp[ind].name; |
msg = cfnp[ind].name; |
if (cfnp[ind].name && cfnp[ind].flags & CFL_MESI) |
if (cfnp[ind].name && cfnp[ind].flags & CFL_MESI) |
snprintf(um, sizeof (um), "%c%c%c%c", |
snprintf(um, sizeof (um), "%c%c%c%c", |
sel & PCTR_X86_UM_M ? 'M' : '-', |
sel & PCTR_UM_M ? 'M' : '-', |
sel & PCTR_X86_UM_E ? 'E' : '-', |
sel & PCTR_UM_E ? 'E' : '-', |
sel & PCTR_X86_UM_S ? 'S' : '-', |
sel & PCTR_UM_S ? 'S' : '-', |
sel & PCTR_X86_UM_I ? 'I' : '-'); |
sel & PCTR_UM_I ? 'I' : '-'); |
else if (cfnp[ind].name && cfnp[ind].flags & CFL_SA) |
else if (cfnp[ind].name && cfnp[ind].flags & CFL_SA) |
snprintf(um, sizeof(um), "%c", |
snprintf(um, sizeof(um), "%c", |
sel & PCTR_X86_UM_A ? 'A' : '-'); |
sel & PCTR_UM_A ? 'A' : '-'); |
if (sel >> PCTR_X86_CM_SHIFT) |
if (sel >> PCTR_CM_SHIFT) |
snprintf(th, sizeof(th), "+%d", |
snprintf(th, sizeof(th), "+%d", |
sel >> PCTR_X86_CM_SHIFT); |
sel >> PCTR_CM_SHIFT); |
snprintf(buf, sizeof(buf), "%c%c%c%c %02x %02x %s %s %s", |
snprintf(buf, sizeof(buf), "%c%c%c%c %02x %02x %s %s %s", |
sel & PCTR_X86_I ? 'i' : '-', |
sel & PCTR_I ? 'i' : '-', |
sel & PCTR_X86_E ? 'e' : '-', |
sel & PCTR_E ? 'e' : '-', |
sel & PCTR_X86_K ? 'k' : '-', |
sel & PCTR_K ? 'k' : '-', |
sel & PCTR_X86_U ? 'u' : '-', |
sel & PCTR_U ? 'u' : '-', |
fn, (sel >> PCTR_X86_UM_SHIFT) & 0xff, th, um, msg); |
fn, (sel >> PCTR_UM_SHIFT) & 0xff, th, um, msg); |
break; |
break; |
case CPU_AMD: |
case CPU_AMD: |
fn = sel & 0xff; |
fn = sel & 0xff; |
if (sel >> PCTR_X86_CM_SHIFT) |
if (sel >> PCTR_CM_SHIFT) |
snprintf(th, sizeof(th), "+%d", |
snprintf(th, sizeof(th), "+%d", |
sel >> PCTR_X86_CM_SHIFT); |
sel >> PCTR_CM_SHIFT); |
snprintf(buf, sizeof(buf), "%c%c%c%c %02x %02x %s", |
snprintf(buf, sizeof(buf), "%c%c%c%c %02x %02x %s", |
sel & PCTR_X86_I ? 'i' : '-', |
sel & PCTR_I ? 'i' : '-', |
sel & PCTR_X86_E ? 'e' : '-', |
sel & PCTR_E ? 'e' : '-', |
sel & PCTR_X86_K ? 'k' : '-', |
sel & PCTR_K ? 'k' : '-', |
sel & PCTR_X86_U ? 'u' : '-', |
sel & PCTR_U ? 'u' : '-', |
fn, (sel >> PCTR_X86_UM_SHIFT) & 0xff, th); |
fn, (sel >> PCTR_UM_SHIFT) & 0xff, th); |
break; |
break; |
} |
} |
return (buf); |
return (buf); |
|
|
if (ctr >= PCTR_INTEL_NUM) |
if (ctr >= PCTR_INTEL_NUM) |
return (EX_DATAERR); |
return (EX_DATAERR); |
if (cflag) |
if (cflag) |
val |= PCTR_P5_C; |
val |= P5CTR_C; |
if (kflag) |
if (kflag) |
val |= PCTR_P5_K; |
val |= P5CTR_K; |
if (uflag) |
if (uflag) |
val |= PCTR_P5_U; |
val |= P5CTR_U; |
if (func && (!kflag && !uflag)) |
if (func && (!kflag && !uflag)) |
val |= PCTR_P5_K | PCTR_P5_U; |
val |= P5CTR_K | P5CTR_U; |
break; |
break; |
case CPU_P6: |
case CPU_P6: |
cfnp = p6fn; |
cfnp = p6fn; |
|
|
if (func && (ind = pctr_ctrfn_index(cfnp, func)) < 0) |
if (func && (ind = pctr_ctrfn_index(cfnp, func)) < 0) |
return (EX_DATAERR); |
return (EX_DATAERR); |
if (func && cfnp[ind].flags & CFL_SA) |
if (func && cfnp[ind].flags & CFL_SA) |
val |= PCTR_X86_UM_A; |
val |= PCTR_UM_A; |
if (Mflag && cfnp[ind].flags & CFL_MESI) |
if (Mflag && cfnp[ind].flags & CFL_MESI) |
val |= PCTR_X86_UM_M; |
val |= PCTR_UM_M; |
if (Eflag && cfnp[ind].flags & CFL_MESI) |
if (Eflag && cfnp[ind].flags & CFL_MESI) |
val |= PCTR_X86_UM_E; |
val |= PCTR_UM_E; |
if (Sflag && cfnp[ind].flags & CFL_MESI) |
if (Sflag && cfnp[ind].flags & CFL_MESI) |
val |= PCTR_X86_UM_S; |
val |= PCTR_UM_S; |
if (Iflag && cfnp[ind].flags & CFL_MESI) |
if (Iflag && cfnp[ind].flags & CFL_MESI) |
val |= PCTR_X86_UM_I; |
val |= PCTR_UM_I; |
if (func && (cfnp[ind].flags & CFL_MESI) && |
if (func && (cfnp[ind].flags & CFL_MESI) && |
(!Mflag || !Eflag || !Sflag || !Iflag)) |
(!Mflag || !Eflag || !Sflag || !Iflag)) |
val |= PCTR_X86_UM_MESI; |
val |= PCTR_UM_MESI; |
if (func && (cfnp[ind].flags & CFL_ED)) |
if (func && (cfnp[ind].flags & CFL_ED)) |
val |= PCTR_X86_E; |
val |= PCTR_E; |
case CPU_AMD: |
case CPU_AMD: |
if (cpu_type == CPU_AMD && func && |
if (cpu_type == CPU_AMD && func && |
((ind = pctr_ctrfn_index(amdfn, func)) < 0)) |
((ind = pctr_ctrfn_index(amdfn, func)) < 0)) |
|
|
if (ctr >= PCTR_AMD_NUM) |
if (ctr >= PCTR_AMD_NUM) |
return (EX_DATAERR); |
return (EX_DATAERR); |
if (eflag) |
if (eflag) |
val |= PCTR_X86_E; |
val |= PCTR_E; |
if (iflag) |
if (iflag) |
val |= PCTR_X86_I; |
val |= PCTR_I; |
if (kflag) |
if (kflag) |
val |= PCTR_X86_K; |
val |= PCTR_K; |
if (uflag) |
if (uflag) |
val |= PCTR_X86_U; |
val |= PCTR_U; |
if (func && (!kflag && !uflag)) |
if (func && (!kflag && !uflag)) |
val |= PCTR_X86_K | PCTR_X86_U; |
val |= PCTR_K | PCTR_U; |
val |= masku << PCTR_X86_UM_SHIFT; |
val |= masku << PCTR_UM_SHIFT; |
val |= thold << PCTR_X86_CM_SHIFT; |
val |= thold << PCTR_CM_SHIFT; |
if (func) |
if (func) |
val |= PCTR_X86_EN; |
val |= PCTR_EN; |
break; |
break; |
default: |
default: |
return (EX_UNAVAILABLE); |
return (EX_UNAVAILABLE); |