Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 645 → Rev 646

/shark/trunk/oslib/kl/advtimer.c
462,17 → 462,40
 
void ll_restore_adv()
{
/* Disable APIC */
SYS_FLAGS f;
 
/* Disable APIC */
if (use_apic) {
unsigned int msr_low_orig, tmp;
unsigned int msr_low_orig, tmp;
 
cli();
f = ll_fsave();
 
disable_APIC_timer();
disable_APIC_timer();
 
rdmsr(APIC_BASE_MSR, msr_low_orig, tmp);
wrmsr(APIC_BASE_MSR, msr_low_orig&~(1<<11), 0);
wrmsr(APIC_BASE_MSR, msr_low_orig&~(1<<11), 0);
 
sti();
ll_frestore(f);
}
}
 
void ll_scale_advtimer(unsigned int old_f, unsigned int new_f)
{
unsigned long long dtsc;
unsigned long temp;
SYS_FLAGS f;
 
f = ll_fsave();
 
mul32div32to32(clk_per_msec,new_f,old_f,temp); /* TODO */
clk_per_msec = temp;
dtsc = clk_per_msec * 500;
clk_opt_0 = (unsigned int)(dtsc);
clk_opt_1 = (unsigned int)((unsigned long long)(dtsc << 1));
clk_opt_2 = (unsigned int)((unsigned long long)(dtsc << 33) / 1000000000L);
clk_opt_3 = (unsigned int)((unsigned long long)(dtsc << 32) / 1000000000L);
clk_opt_4 = (unsigned int)((unsigned long long)(dtsc << 31) / 1000000000L);
clk_opt_5 = (unsigned int)((unsigned long long)(dtsc << 30) / 1000000000L);
 
ll_frestore(f);
}
/shark/trunk/oslib/ll/i386/advtimer.h
197,6 → 197,7
 
void ll_init_advtimer(void);
void ll_restore_adv(void);
void ll_scale_advtimer(unsigned int old_f, unsigned int new_f);
 
END_DEF
#endif