SMMRegisters regs = { 0, 0, 0, 0, 0, 0 }; 
struct smm_regs regs = { .eax = I8K_SMM_GET_TEMP, }; 
static int i8k_get_cpu_temp(void){	SMMRegisters regs = { 0, 0, 0, 0, 0, 0 };	int rc;	int temp;#ifdef I8K_TEMPERATURE_BUG	static int prev = 0;#endif	regs.eax = I8K_SMM_GET_TEMP;	if ((rc = i8k_smm(&regs)) < 0) {		return rc;	}	temp = regs.eax & 0xff;#ifdef I8K_TEMPERATURE_BUG	/*	 * Sometimes the temperature sensor returns 0x99, which is out of range.	 * In this case we return (once) the previous cached value. For example:	 # 1003655137 00000058 00005a4b	 # 1003655138 00000099 00003a80 <--- 0x99 = 153 degrees	 # 1003655139 00000054 00005c52	 */	if (temp > I8K_MAX_TEMP) {		temp = prev;		prev = I8K_MAX_TEMP;	} else {		prev = temp;	}#endif	return temp;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/8378b92405dd606c6f3a0b1e303b67c8f8c9f743/i8k.c/clean/drivers/char/i8k.c