Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 645 → Rev 646

/shark/trunk/include/kernel/func.h
21,11 → 21,11
 
/**
------------
CVS : $Id: func.h,v 1.14 2004-05-10 18:16:00 mauro Exp $
CVS : $Id: func.h,v 1.15 2004-05-12 08:09:53 mauro Exp $
 
File: $File$
Revision: $Revision: 1.14 $
Last update: $Date: 2004-05-10 18:16:00 $
Revision: $Revision: 1.15 $
Last update: $Date: 2004-05-12 08:09:53 $
------------
 
Kernel functions:
209,6 → 209,9
VM_end
*/
 
/* Advanced Timer adjust */
#define kern_scale_timer ll_scale_advtimer
 
/* Exit mode selection */
#define sys_set_reboot ll_set_reboot
 
/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