--- mcelog/p4.c~	2005-02-09 12:20:20.000000000 +0100
+++ mcelog/p4.c	2006-05-27 06:22:06.000000000 +0200
@@ -24,6 +24,8 @@
 #include <stdio.h>
 #include "mcelog.h"
 
+#define BANK_THERMAL 128
+
 /* decode mce for P4/Xeon family */
 
 static inline int test_prefix(int nr, __u32 value)
@@ -272,8 +274,21 @@
 	Wprintf("\n");
 }
 
+static void decode_thermal(struct mce *log)
+{
+	if (log->status & 1) 
+		Wprintf("Processor core is above trip temperature. Throttling enabled.\n");
+	else
+		Wprintf("Processor core below trip temperature. Throttling disabled\n");
+}
+
 void decode_p4_mc(struct mce *log)
 {
+	if (log->bank == BANK_THERMAL) { 
+		decode_thermal(log);
+		return;
+	}
+
 	decode_mcg(log->mcgstatus);
 	decode_mci(log->status);
 }
@@ -281,6 +296,8 @@
 char *p4_bank_name(int num)
 {
 	static char bname[64];
+	if (num == BANK_THERMAL) 
+		return "THERMAL EVENT"; 
 	sprintf(bname, "BANK %d", num);
 	return bname;
 }
