/*
* $Id: MSR-K6.c,v 1.10 2002/11/25 15:34:30 davej Exp $
* This file is part of x86info.
* (C) 2001 Dave Jones.
*
* Licensed under the terms of the GNU GPL License version 2.
*
* AMD-K6 specific MSR information
* See 21329h1.pdf for more details.
*
*/
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include "../x86info.h"
#include "AMD.h"
void dump_k6_MSR (struct cpudata *cpu)
{
unsigned long long val=0;
if (!user_is_root)
return;
dumpmsr(cpu->number, 0xC0000082, 32);
/* Original K6 or K6-2 (old core). */
if ((cpu->model < 8) || ((cpu->model==8) && (cpu->stepping <8))) {
if (read_msr (cpu->number, 0xC0000082, &val) == 1) {
printf ("Write allocate enable limit: %dMbytes\n", (int) ((val & 0x7e) >>1) * 4);
printf ("Write allocate 15-16M bytes: %s\n", val & 1 ? "enabled" : "disabled");
} else {
printf ("Couldn't read WHCR register.\n");
}
}
/* K6-2 core (Stepping 8-F), K6-III or later. */
if ((cpu->model > 8) || ((cpu->model==8) && (cpu->stepping>=8))) {
if (read_msr (cpu->number, 0xC0000082, &val) == 1) {
if (!(val & (0x3ff << 22)))
printf ("Write allocate disabled\n");
else {
printf ("Write allocate enable limit: %dMbytes\n", (int) ((val >> 22) & 0x3ff) * 4);
printf ("Write allocate 15-16M bytes: %s\n", val & (1<<16) ? "enabled" : "disabled");
}
} else {
printf ("Couldn't read WHCR register.\n");
}
}
/* Dump EWBE register on K6-2 & K6-3 */
if ((cpu->family==5) && (cpu->model>=8)) {
if (read_msr (cpu->number, 0xC0000080, &val) == 1) {
if (val & (1<<0))
printf ("System call extension present.\n");
if (val & (1<<1))
printf ("Data prefetch enabled.\n");
else
printf ("Data prefetch disabled.\n");
printf ("EWBE mode: ");
switch ((val & (1<<2|1<<3|1<<4))>>2) {
case 0: printf ("strong ordering (slowest performance)\n");
break;
case 1: printf ("speculative disable (close to best performance)\n");
break;
case 2: printf ("invalid\n");
break;
case 3: printf ("global disable (best performance)\n");
break;
}
} else {
printf ("Couldn't read EFER register.\n");
}
}
printf ("\n");
}
syntax highlighted by Code2HTML, v. 0.9.1