All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Remove duplicated code for reading control registers
@ 2007-03-13 12:30 Glauber de Oliveira Costa
       [not found] ` <Pine.LNX.4.58.0703130532510.13997@shark.he.net>
  0 siblings, 1 reply; 2+ messages in thread
From: Glauber de Oliveira Costa @ 2007-03-13 12:30 UTC (permalink / raw)
  To: akpm, andi, linux-kernel

Tiny cleanup:

In x86_64, the same functions for reading cr3 and writing cr{3,4} are
defined in tlbflush.h and system.h, whith just a name change.
The only difference is the clobbering of memory, which seems a safe, and
even needed change for the write_cr4. This patch removes the duplicate.
write_cr3() is moved to system.h for consistency.

Signed-off-by: Glauber de Oliveira Costa <gcosta@redhat.com>

-- 
Glauber de Oliveira Costa
Red Hat Inc.
"Free as in Freedom"

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] Remove duplicated code for reading control registers
       [not found] ` <Pine.LNX.4.58.0703130532510.13997@shark.he.net>
@ 2007-03-13 12:52   ` Glauber de Oliveira Costa
  0 siblings, 0 replies; 2+ messages in thread
From: Glauber de Oliveira Costa @ 2007-03-13 12:52 UTC (permalink / raw)
  To: Randy.Dunlap; +Cc: linux-kernel, andi, akpm

[-- Attachment #1: Type: text/plain, Size: 603 bytes --]

On Tue, Mar 13, 2007 at 05:33:09AM -0700, Randy.Dunlap wrote:
> On Tue, 13 Mar 2007, Glauber de Oliveira Costa wrote:
> 
> > Tiny cleanup:
> >
> > In x86_64, the same functions for reading cr3 and writing cr{3,4} are
> > defined in tlbflush.h and system.h, whith just a name change.
> > The only difference is the clobbering of memory, which seems a safe, and
> > even needed change for the write_cr4. This patch removes the duplicate.
> > write_cr3() is moved to system.h for consistency.
> 
> missing patch.....
> 
thanks. Attached now

-- 
Glauber de Oliveira Costa
Red Hat Inc.
"Free as in Freedom"

[-- Attachment #2: cleanup.patch --]
[-- Type: text/plain, Size: 2146 bytes --]

---

 include/asm-x86_64/system.h   |    7 ++++++-
 include/asm-x86_64/tlbflush.h |   33 +++++----------------------------
 2 files changed, 11 insertions(+), 29 deletions(-)

2d19cf472903fa4c9e763301b7b1cc0fa53bd023
diff --git a/include/asm-x86_64/system.h b/include/asm-x86_64/system.h
index bd376bc..91b461d 100644
--- a/include/asm-x86_64/system.h
+++ b/include/asm-x86_64/system.h
@@ -89,6 +89,11 @@ static inline unsigned long read_cr3(voi
 	return cr3;
 } 
 
+static inline void write_cr3(unsigned long val)
+{ 
+	asm volatile("movq %0,%%cr3" :: "r" (val) : "memory");
+} 
+
 static inline unsigned long read_cr4(void)
 { 
 	unsigned long cr4;
@@ -98,7 +103,7 @@ static inline unsigned long read_cr4(voi
 
 static inline void write_cr4(unsigned long val)
 { 
-	asm volatile("movq %0,%%cr4" :: "r" (val));
+	asm volatile("movq %0,%%cr4" :: "r" (val) : "memory");
 } 
 
 #define stts() write_cr0(8 | read_cr0())
diff --git a/include/asm-x86_64/tlbflush.h b/include/asm-x86_64/tlbflush.h
index 983bd29..512401b 100644
--- a/include/asm-x86_64/tlbflush.h
+++ b/include/asm-x86_64/tlbflush.h
@@ -3,41 +3,18 @@
 
 #include <linux/mm.h>
 #include <asm/processor.h>
-
-static inline unsigned long get_cr3(void)
-{
-	unsigned long cr3;
-	asm volatile("mov %%cr3,%0" : "=r" (cr3));
-	return cr3;
-}
-
-static inline void set_cr3(unsigned long cr3)
-{
-	asm volatile("mov %0,%%cr3" :: "r" (cr3) : "memory");
-}
+#include <asm/system.h>
 
 static inline void __flush_tlb(void)
 {
-	set_cr3(get_cr3());
-}
-
-static inline unsigned long get_cr4(void)
-{
-	unsigned long cr4;
-	asm volatile("mov %%cr4,%0" : "=r" (cr4));
-	return cr4;
-}
-
-static inline void set_cr4(unsigned long cr4)
-{
-	asm volatile("mov %0,%%cr4" :: "r" (cr4) : "memory");
+	write_cr3(read_cr3());
 }
 
 static inline void __flush_tlb_all(void)
 {
-	unsigned long cr4 = get_cr4();
-	set_cr4(cr4 & ~X86_CR4_PGE);	/* clear PGE */
-	set_cr4(cr4);			/* write old PGE again and flush TLBs */
+	unsigned long cr4 = read_cr4();
+	write_cr4(cr4 & ~X86_CR4_PGE);	/* clear PGE */
+	write_cr4(cr4);			/* write old PGE again and flush TLBs */
 }
 
 #define __flush_tlb_one(addr) \
-- 
1.1.3


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2007-03-13 12:52 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-03-13 12:30 [PATCH] Remove duplicated code for reading control registers Glauber de Oliveira Costa
     [not found] ` <Pine.LNX.4.58.0703130532510.13997@shark.he.net>
2007-03-13 12:52   ` Glauber de Oliveira Costa

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.