diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2021-01-17 21:21:12 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2021-01-17 21:21:12 +0100 |
commit | a05bab362f66ddd6fa65f2e7cda9eaaa0217ec08 (patch) | |
tree | ccd2fdef5230d2d5369619e6e7f84b389928ad3d /sys/src/9/xen | |
parent | 999e98b9b856ae4fc75b3ad33783488e33cdd426 (diff) |
pc, pc64: add minimal HPET driver to measure LAPIC and TSC frequencies
This adds the new function pointer PCArch.clockinit(),
which is a timer dependent initialization routine.
It also takes over the job of guesscpuhz(). This way, the
architecture ident code can switch between different
timers (i8253, HPET and XEN timer).
Diffstat (limited to 'sys/src/9/xen')
-rw-r--r-- | sys/src/9/xen/archxen.c | 10 | ||||
-rw-r--r-- | sys/src/9/xen/fns.h | 1 | ||||
-rw-r--r-- | sys/src/9/xen/main.c | 2 | ||||
-rw-r--r-- | sys/src/9/xen/xentimer.c | 2 |
4 files changed, 9 insertions, 6 deletions
diff --git a/sys/src/9/xen/archxen.c b/sys/src/9/xen/archxen.c index 6f3d1bfae..0e30e6591 100644 --- a/sys/src/9/xen/archxen.c +++ b/sys/src/9/xen/archxen.c @@ -52,10 +52,11 @@ shutdown(void) HYPERVISOR_shutdown(1); } -int xenintrassign(Vctl *v); -void xentimerenable(void); -uvlong xentimerread(uvlong*); -void xentimerset(uvlong); +extern int xenintrassign(Vctl *v); +extern void xentimerinit(void); +extern void xentimerenable(void); +extern uvlong xentimerread(uvlong*); +extern void xentimerset(uvlong); PCArch archxen = { .id= "Xen", @@ -63,6 +64,7 @@ PCArch archxen = { .reset= shutdown, .intrinit= intrinit, .intrassign= xenintrassign, +.clockinit= xentimerinit, .clockenable= xentimerenable, .fastclock= xentimerread, .timerset= xentimerset, diff --git a/sys/src/9/xen/fns.h b/sys/src/9/xen/fns.h index 32a101935..3013d5f4a 100644 --- a/sys/src/9/xen/fns.h +++ b/sys/src/9/xen/fns.h @@ -27,7 +27,6 @@ void (*fprestore)(FPsave*); void (*fpsave)(FPsave*); ulong getcr4(void); char* getconf(char*); -void guesscpuhz(int); void halt(void); void mwait(void*); void i8042reset(void); diff --git a/sys/src/9/xen/main.c b/sys/src/9/xen/main.c index 61bf5bf4c..32fac0679 100644 --- a/sys/src/9/xen/main.c +++ b/sys/src/9/xen/main.c @@ -76,6 +76,8 @@ main(void) // meminit() is not for us confinit(); archinit(); + if(arch->clockinit) + arch->clockinit(); xinit(); trapinit(); printinit(); diff --git a/sys/src/9/xen/xentimer.c b/sys/src/9/xen/xentimer.c index 4e6a2715e..eb480ffd0 100644 --- a/sys/src/9/xen/xentimer.c +++ b/sys/src/9/xen/xentimer.c @@ -34,7 +34,7 @@ getshadow(void) /* just get it from the shared info */ void -guesscpuhz(int) // XXX no arg! +xentimerinit(void) { vcpu_time_info_t *t; |