blob: dc551babf3f4fb5442019ecfa8d420f6ede0e91e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
From eba69831e8f35174e2e15e373a66f40dc0be8929 Mon Sep 17 00:00:00 2001
From: Kurt Mahan <kmahan@freescale.com>
Date: Wed, 14 May 2008 12:23:12 -0600
Subject: [PATCH] Force branch-cache invalidate on task switch.
When finishing a task switch make sure the branch cache
gets invalidated to ensure no stale entries exist for
the next user space.
LTIBName: mcfv4e-brcache-inval
Signed-off-by: Kurt Mahan <kmahan@freescale.com>
---
include/asm-m68k/system.h | 15 +++++++++++++++
1 files changed, 15 insertions(+), 0 deletions(-)
--- a/include/asm-m68k/system.h
+++ b/include/asm-m68k/system.h
@@ -5,9 +5,24 @@
#include <linux/kernel.h>
#include <asm/segment.h>
#include <asm/entry.h>
+#include <asm/cfcache.h>
#ifdef __KERNEL__
+#ifdef CONFIG_COLDFIRE
+#define FLUSH_BC (0x00040000)
+
+#define finish_arch_switch(prev) do { \
+ unsigned long tmpreg; \
+ asm volatile ( "move.l %2,%0\n" \
+ "orl %1,%0\n" \
+ "movec %0,%%cacr" \
+ : "=&d" (tmpreg) \
+ : "id" (FLUSH_BC), "m" (shadow_cacr)); \
+ } while(0)
+
+#endif
+
/*
* switch_to(n) should switch tasks to task ptr, first checking that
* ptr isn't the current task, in which case it does nothing. This
|