Add clock
This commit is contained in:
parent
52d67f54e0
commit
d114e89ca8
5 changed files with 18 additions and 8 deletions
|
@ -62,8 +62,6 @@ grub_uint64_t grub_mmap_get_upper (void);
|
||||||
|
|
||||||
extern grub_uint32_t EXPORT_VAR (grub_arch_memsize);
|
extern grub_uint32_t EXPORT_VAR (grub_arch_memsize);
|
||||||
extern grub_uint32_t EXPORT_VAR (grub_arch_highmemsize);
|
extern grub_uint32_t EXPORT_VAR (grub_arch_highmemsize);
|
||||||
extern grub_uint32_t EXPORT_VAR (grub_arch_busclock);
|
|
||||||
extern grub_uint32_t EXPORT_VAR (grub_arch_cpuclock);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -21,10 +21,13 @@
|
||||||
|
|
||||||
#include <grub/symbol.h>
|
#include <grub/symbol.h>
|
||||||
|
|
||||||
#define GRUB_TICKS_PER_SECOND 1000
|
#define GRUB_TICKS_PER_SECOND (grub_arch_cpuclock / 2)
|
||||||
|
|
||||||
/* Return the real time in ticks. */
|
/* Return the real time in ticks. */
|
||||||
grub_uint32_t EXPORT_FUNC (grub_get_rtc) (void);
|
grub_uint64_t EXPORT_FUNC (grub_get_rtc) (void);
|
||||||
|
|
||||||
|
extern grub_uint32_t EXPORT_VAR (grub_arch_busclock);
|
||||||
|
extern grub_uint32_t EXPORT_VAR (grub_arch_cpuclock);
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
grub_cpu_idle(void)
|
grub_cpu_idle(void)
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
#include <grub/symbol.h>
|
#include <grub/symbol.h>
|
||||||
#include <grub/cpu/time.h>
|
#include <grub/cpu/time.h>
|
||||||
|
|
||||||
#ifdef GRUB_MACHINE_EMU
|
#if defined (GRUB_MACHINE_EMU) || defined (GRUB_UTIL)
|
||||||
#define GRUB_TICKS_PER_SECOND 100000
|
#define GRUB_TICKS_PER_SECOND 100000
|
||||||
#else
|
#else
|
||||||
#include <grub/machine/time.h>
|
#include <grub/machine/time.h>
|
||||||
|
|
|
@ -28,12 +28,20 @@
|
||||||
#include <grub/machine/memory.h>
|
#include <grub/machine/memory.h>
|
||||||
#include <grub/cpu/kernel.h>
|
#include <grub/cpu/kernel.h>
|
||||||
|
|
||||||
grub_uint32_t
|
/* FIXME: use interrupt to count high. */
|
||||||
|
grub_uint64_t
|
||||||
grub_get_rtc (void)
|
grub_get_rtc (void)
|
||||||
{
|
{
|
||||||
static grub_uint64_t calln = 0;
|
static grub_uint32_t high = 0;
|
||||||
|
static grub_uint32_t last = 0;
|
||||||
|
grub_uint32_t low;
|
||||||
|
|
||||||
return (calln++) >> 8;
|
asm volatile ("mfc0 %0, $9": "=r" (low));
|
||||||
|
if (low < last)
|
||||||
|
high++;
|
||||||
|
last = low;
|
||||||
|
|
||||||
|
return (((grub_uint64_t) high) << 32) | low;
|
||||||
}
|
}
|
||||||
|
|
||||||
grub_err_t
|
grub_err_t
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
/* For frequencies. */
|
/* For frequencies. */
|
||||||
#include <grub/pci.h>
|
#include <grub/pci.h>
|
||||||
|
#include <grub/machine/time.h>
|
||||||
|
|
||||||
#define ELF32_LOADMASK (0x00000000UL)
|
#define ELF32_LOADMASK (0x00000000UL)
|
||||||
#define ELF64_LOADMASK (0x0000000000000000ULL)
|
#define ELF64_LOADMASK (0x0000000000000000ULL)
|
||||||
|
|
Loading…
Add table
Reference in a new issue