[coreboot] patch: init gx cache earlier.

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Mon Feb 4 17:50:40 CET 2008


On 04.02.2008 16:45, ron minnich wrote:
> we can provide a function, cycles, in the arch-dependent code. cycles
> returns whatever makes sense for the architecture.
>
> Then this patch can be cleaned up.
>   

What about this? (Varargs stuff still needs to get fixed.)

Regards,
Carl-Daniel

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>

Index: include/arch/x86/cpu.h
===================================================================
--- include/arch/x86/cpu.h	(Revision 571)
+++ include/arch/x86/cpu.h	(Arbeitskopie)
@@ -196,4 +196,23 @@
 	__asm__ __volatile__("hlt" : : : "memory");
 }
 
+/**
+ * Retrieve a 32-bit time stamp. The generic get_timestamp() offers no guarantee
+ * whatsoever about monotony, granularity, absence of wraparounds or linear
+ * relationship between the time stamp and real time.
+ * This implementation has wraparounds after 2^32 cycles of the TSC register
+ * and will usually have a linear dependency on real time.
+ * Qemu and Geode LX support the rdtsc instruction.
+ * If v3 ever is used on x86 architectures which don't support rdtsc, we have
+ * to provide an alternative.
+ *
+ * @return 32-bit truncated number of TSC cycles since poweron.
+ */
+u32 get_timestamp(void)
+{
+	u32 tstamp;
+	__asm__ __volatile__ ("rdtsc" : "=a" (tstamp) : : "edx");
+	return tstamp;
+}
+
 #endif /* ARCH_X86_CPU_H */
Index: lib/console.c
===================================================================
--- lib/console.c	(Revision 571)
+++ lib/console.c	(Arbeitskopie)
@@ -34,11 +34,16 @@
 {
 	va_list args;
 	int i;
+	u32 tstamp;
 
 	if (msg_level > console_loglevel()) {
 		return 0;
 	}
 
+	tstamp = get_timestamp();
+#error vtxprintf expects varargs, need to fix up
+	vtxprintf(console_tx_byte, (void *)0, "[tstamp %d] ", tstamp);
+
 	va_start(args, fmt);
 	i = vtxprintf(console_tx_byte, (void *)0, fmt, args);
 	va_end(args);


-- 
http://www.hailfinger.org/





More information about the coreboot mailing list