a5bd9f6
From 0535e4875ec962879b74f69e472615245f7ff987 Mon Sep 17 00:00:00 2001
a5bd9f6
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
a5bd9f6
Date: Thu, 4 Apr 2013 09:55:44 +0200
a5bd9f6
Subject: [PATCH 252/364] 	Use TSC as a possible time source on
a5bd9f6
 i386-ieee1275.
a5bd9f6
a5bd9f6
---
a5bd9f6
 ChangeLog                      |  4 ++++
a5bd9f6
 grub-core/Makefile.core.def    |  8 ++------
a5bd9f6
 grub-core/kern/ieee1275/init.c | 15 ++++++++++-----
a5bd9f6
 3 files changed, 16 insertions(+), 11 deletions(-)
a5bd9f6
a5bd9f6
diff --git a/ChangeLog b/ChangeLog
a5bd9f6
index 7bbcffa..bd9e903 100644
a5bd9f6
--- a/ChangeLog
a5bd9f6
+++ b/ChangeLog
a5bd9f6
@@ -1,5 +1,9 @@
a5bd9f6
 2013-04-04  Vladimir Serbinenko  <phcoder@gmail.com>
a5bd9f6
 
a5bd9f6
+	Use TSC as a possible time source on i386-ieee1275.
a5bd9f6
+
a5bd9f6
+2013-04-04  Vladimir Serbinenko  <phcoder@gmail.com>
a5bd9f6
+
a5bd9f6
 	* grub-core/bus/usb/usbtrans.c (grub_usb_bulk_readwrite_packetize):
a5bd9f6
 	Init err.
a5bd9f6
 
a5bd9f6
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
a5bd9f6
index 911754d..4b4c024 100644
a5bd9f6
--- a/grub-core/Makefile.core.def
a5bd9f6
+++ b/grub-core/Makefile.core.def
a5bd9f6
@@ -128,11 +128,11 @@ kernel = {
a5bd9f6
   efi = kern/efi/mm.c;
a5bd9f6
   efi = term/efi/console.c;
a5bd9f6
 
a5bd9f6
-  i386_efi = kern/i386/tsc.c;
a5bd9f6
+  x86 = kern/i386/tsc.c;
a5bd9f6
+
a5bd9f6
   i386_efi = kern/i386/efi/init.c;
a5bd9f6
   i386_efi = bus/pci.c;
a5bd9f6
 
a5bd9f6
-  x86_64_efi = kern/i386/tsc.c;
a5bd9f6
   x86_64_efi = kern/x86_64/dl.c;
a5bd9f6
   x86_64_efi = kern/x86_64/efi/callwrap.S;
a5bd9f6
   x86_64_efi = kern/i386/efi/init.c;
a5bd9f6
@@ -145,19 +145,15 @@ kernel = {
a5bd9f6
 
a5bd9f6
   i386_pc = kern/i386/pc/init.c;
a5bd9f6
   i386_pc = kern/i386/pc/mmap.c;
a5bd9f6
-  i386_pc = kern/i386/tsc.c;
a5bd9f6
   i386_pc = term/i386/pc/console.c;
a5bd9f6
 
a5bd9f6
   i386_qemu = bus/pci.c;
a5bd9f6
   i386_qemu = kern/vga_init.c;
a5bd9f6
   i386_qemu = kern/i386/qemu/mmap.c;
a5bd9f6
-  i386_qemu = kern/i386/tsc.c;
a5bd9f6
 
a5bd9f6
   i386_coreboot = kern/i386/coreboot/mmap.c;
a5bd9f6
-  i386_coreboot = kern/i386/tsc.c;
a5bd9f6
 
a5bd9f6
   i386_multiboot = kern/i386/multiboot_mmap.c;
a5bd9f6
-  i386_multiboot = kern/i386/tsc.c;
a5bd9f6
 
a5bd9f6
   mips = kern/mips/cache.S;
a5bd9f6
   mips = kern/mips/dl.c;
a5bd9f6
diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c
a5bd9f6
index 0894cb6..391a734 100644
a5bd9f6
--- a/grub-core/kern/ieee1275/init.c
a5bd9f6
+++ b/grub-core/kern/ieee1275/init.c
a5bd9f6
@@ -34,6 +34,9 @@
a5bd9f6
 #include <grub/net.h>
a5bd9f6
 #include <grub/offsets.h>
a5bd9f6
 #include <grub/memory.h>
a5bd9f6
+#ifdef __i386__
a5bd9f6
+#include <grub/cpu/tsc.h>
a5bd9f6
+#endif
a5bd9f6
 #ifdef __sparc__
a5bd9f6
 #include <grub/machine/kernel.h>
a5bd9f6
 #endif
a5bd9f6
@@ -269,8 +272,6 @@ grub_parse_cmdline (void)
a5bd9f6
     }
a5bd9f6
 }
a5bd9f6
 
a5bd9f6
-static grub_uint64_t ieee1275_get_time_ms (void);
a5bd9f6
-
a5bd9f6
 grub_addr_t grub_modbase;
a5bd9f6
 
a5bd9f6
 void
a5bd9f6
@@ -288,7 +289,11 @@ grub_machine_init (void)
a5bd9f6
 
a5bd9f6
   grub_parse_cmdline ();
a5bd9f6
 
a5bd9f6
-  grub_install_get_time_ms (ieee1275_get_time_ms);
a5bd9f6
+#ifdef __i386__
a5bd9f6
+  grub_tsc_init ();
a5bd9f6
+#else
a5bd9f6
+  grub_install_get_time_ms (grub_rtc_get_time_ms);
a5bd9f6
+#endif
a5bd9f6
 }
a5bd9f6
 
a5bd9f6
 void
a5bd9f6
@@ -298,8 +303,8 @@ grub_machine_fini (void)
a5bd9f6
   grub_console_fini ();
a5bd9f6
 }
a5bd9f6
 
a5bd9f6
-static grub_uint64_t
a5bd9f6
-ieee1275_get_time_ms (void)
a5bd9f6
+grub_uint64_t
a5bd9f6
+grub_rtc_get_time_ms (void)
a5bd9f6
 {
a5bd9f6
   grub_uint32_t msecs = 0;
a5bd9f6
 
a5bd9f6
-- 
a5bd9f6
1.8.1.4
a5bd9f6