svn commit: r253881 - in projects/atomic64/sys: amd64/include i386/include
Jung-uk Kim
jkim at FreeBSD.org
Fri Aug 2 05:36:06 UTC 2013
Author: jkim
Date: Fri Aug 2 05:36:05 2013
New Revision: 253881
URL: http://svnweb.freebsd.org/changeset/base/253881
Log:
- pde_store() and pte_store() do not need release semantics. [1]
- Remove redundant pte_load() macros.
Pointed by: alc [1]
Modified:
projects/atomic64/sys/amd64/include/pmap.h
projects/atomic64/sys/i386/include/pmap.h
Modified: projects/atomic64/sys/amd64/include/pmap.h
==============================================================================
--- projects/atomic64/sys/amd64/include/pmap.h Fri Aug 2 05:25:11 2013 (r253880)
+++ projects/atomic64/sys/amd64/include/pmap.h Fri Aug 2 05:36:05 2013 (r253881)
@@ -185,13 +185,18 @@ extern u_int64_t KPML4phys; /* physical
pt_entry_t *vtopte(vm_offset_t);
#define vtophys(va) pmap_kextract(((vm_offset_t) (va)))
-#define pte_load(ptep) atomic_load_acq_long(ptep)
#define pte_load_store(ptep, pte) atomic_swap_long(ptep, pte)
-#define pte_load_clear(pte) atomic_swap_long(pte, 0)
-#define pte_store(ptep, pte) atomic_store_rel_long(ptep, pte)
-#define pte_clear(ptep) atomic_store_rel_long(ptep, 0)
-
-#define pde_store(pdep, pde) atomic_store_rel_long(pdep, pde)
+#define pte_load_clear(ptep) atomic_swap_long(ptep, 0)
+#define pte_store(ptep, pte) \
+ do { \
+ *(pt_entry_t *)(ptep) = (pt_entry_t)(pte); \
+ } while (0)
+#define pte_clear(ptep) pte_store(ptep, 0)
+
+#define pde_store(pdep, pde) \
+ do { \
+ *(pd_entry_t *)(pdep) = (pd_entry_t)(pde); \
+ } while (0)
extern pt_entry_t pg_nx;
Modified: projects/atomic64/sys/i386/include/pmap.h
==============================================================================
--- projects/atomic64/sys/i386/include/pmap.h Fri Aug 2 05:25:11 2013 (r253880)
+++ projects/atomic64/sys/i386/include/pmap.h Fri Aug 2 05:36:05 2013 (r253881)
@@ -327,7 +327,6 @@ pmap_kextract(vm_offset_t va)
#if defined(PAE) && !defined(XEN)
#define pde_cmpset(pdep, old, new) atomic_cmpset_64_i586(pdep, old, new)
-#define pte_load(ptep) atomic_load_acq_64_i586(ptep)
#define pte_load_store(ptep, pte) atomic_swap_64_i586(ptep, pte)
#define pte_load_clear(ptep) atomic_swap_64_i586(ptep, 0)
#define pte_store(ptep, pte) atomic_store_rel_64_i586(ptep, pte)
@@ -337,10 +336,12 @@ extern pt_entry_t pg_nx;
#elif !defined(PAE) && !defined(XEN)
#define pde_cmpset(pdep, old, new) atomic_cmpset_int(pdep, old, new)
-#define pte_load(ptep) atomic_load_acq_int(ptep)
#define pte_load_store(ptep, pte) atomic_swap_int(ptep, pte)
-#define pte_load_clear(pte) atomic_swap_int(pte, 0)
-#define pte_store(ptep, pte) atomic_store_rel_int(ptep, pte)
+#define pte_load_clear(ptep) atomic_swap_int(ptep, 0)
+#define pte_store(ptep, pte) \
+ do { \
+ *(pt_entry_t *)(ptep) = (pt_entry_t)(pte);
+ while (0)
#endif /* PAE */
More information about the svn-src-projects
mailing list