rem: picb = ich_reg_read_16(ICH_REG_PO_BASE + (config->swap_reg ? ICH_REG_X_SR : ICH_REG_X_PICB));
add: picb = ich_reg_read_16(ICH_REG_PO_BASE + GET_REG_X_PICB(config));
context: ich_clock_get(){	uint32 civ1, civ2, picb;	uint32 startframe;	uint32 stopframe;	uint32 rate;	bigtime_t starttime;	bigtime_t stoptime;	do {		civ1 = ich_reg_read_8 (ICH_REG_PO_BASE + ICH_REG_X_CIV);		picb = ich_reg_read_16(ICH_REG_PO_BASE + (config->swap_reg ? ICH_REG_X_SR : ICH_REG_X_PICB));		civ2 = ich_reg_read_8 (ICH_REG_PO_BASE + ICH_REG_X_CIV);	} while (civ1 != civ2);	starttime = system_time();	startframe = (civ1 * (BUFFER_SIZE / 4));	if (picb < (BUFFER_SIZE / 4))		startframe += (BUFFER_SIZE / 4) - picb;			snooze(100000);	do {		civ1 = ich_reg_read_8 (ICH_REG_PO_BASE + ICH_REG_X_CIV);		picb = ich_reg_read_16(ICH_REG_PO_BASE + (config->swap_reg ? ICH_REG_X_SR : ICH_REG_X_PICB));		civ2 = ich_reg_read_8 (ICH_REG_PO_BASE + ICH_REG_X_CIV);	} while (civ1 != civ2);	stoptime = system_time();	stopframe = (civ1 * (BUFFER_SIZE / 4));	if (picb < (BUFFER_SIZE / 4))		stopframe += (BUFFER_SIZE / 4) - picb;	if (stopframe < startframe)		stopframe += ICH_BD_COUNT * (BUFFER_SIZE / 4);	rate = (1000000LL * (stopframe - startframe)) / (stoptime - starttime);	return rate;}