aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/patches-3.10/307-mips-Reimplement-get_cycles.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/patches-3.10/307-mips-Reimplement-get_cycles.patch')
-rw-r--r--target/linux/generic/patches-3.10/307-mips-Reimplement-get_cycles.patch69
1 files changed, 0 insertions, 69 deletions
diff --git a/target/linux/generic/patches-3.10/307-mips-Reimplement-get_cycles.patch b/target/linux/generic/patches-3.10/307-mips-Reimplement-get_cycles.patch
deleted file mode 100644
index 6a8f5b1bd5..0000000000
--- a/target/linux/generic/patches-3.10/307-mips-Reimplement-get_cycles.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 9c9b415c50bc298ac61412dff856eae2f54889ee Mon Sep 17 00:00:00 2001
-From: Ralf Baechle <ralf@linux-mips.org>
-Date: Thu, 12 Sep 2013 13:47:32 +0200
-Subject: [PATCH] MIPS: Reimplement get_cycles().
-
-This essentially reverts commit efb9ca08b5a2374b29938cdcab417ce4feb14b54
-(kernel.org) / 58020a106879a8b372068741c81f0015c9b0b96dbv [[MIPS] Change
-get_cycles to always return 0.]
-
-Most users of get_cycles() invoke it as a timing interface. That's why
-in modern kernels it was never very much missed for. /dev/random however
-uses get_cycles() in the how the jitter in the interrupt timing contains
-some useful entropy.
-
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/include/asm/timex.h | 33 ++++++++++++++++++++++++++++++++-
- 1 file changed, 32 insertions(+), 1 deletion(-)
-
---- a/arch/mips/include/asm/timex.h
-+++ b/arch/mips/include/asm/timex.h
-@@ -10,6 +10,7 @@
-
- #ifdef __KERNEL__
-
-+#include <asm/cpu-features.h>
- #include <asm/mipsregs.h>
-
- /*
-@@ -33,9 +34,38 @@
-
- typedef unsigned int cycles_t;
-
-+/*
-+ * On R4000/R4400 before version 5.0 an erratum exists such that if the
-+ * cycle counter is read in the exact moment that it is matching the
-+ * compare register, no interrupt will be generated.
-+ *
-+ * There is a suggested workaround and also the erratum can't strike if
-+ * the compare interrupt isn't being used as the clock source device.
-+ * However for now the implementaton of this function doesn't get these
-+ * fine details right.
-+ */
- static inline cycles_t get_cycles(void)
- {
-- return 0;
-+ switch (cpu_data[0].cputype) {
-+ case CPU_R4400PC:
-+ case CPU_R4400SC:
-+ case CPU_R4400MC:
-+ if ((read_c0_prid() & 0xff) >= 0x0050)
-+ return read_c0_count();
-+ break;
-+
-+ case CPU_R4000PC:
-+ case CPU_R4000SC:
-+ case CPU_R4000MC:
-+ break;
-+
-+ default:
-+ if (cpu_has_counter)
-+ return read_c0_count();
-+ break;
-+ }
-+
-+ return 0; /* no usable counter */
- }
-
- #endif /* __KERNEL__ */