Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F148988139
D19226.id54047.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
D19226.id54047.diff
View Options
Index: sys/i386/i386/pmap.c
===================================================================
--- sys/i386/i386/pmap.c
+++ sys/i386/i386/pmap.c
@@ -3801,7 +3801,7 @@
if ((origpte & PG_A) != 0)
pmap_invalidate_page_int(pmap, va);
} else
- pte_store(pte, newpte);
+ pte_store_z(pte, newpte);
unchanged:
@@ -4102,9 +4102,12 @@
if ((prot & VM_PROT_EXECUTE) == 0 && !i386_read_exec)
newpte |= pg_nx;
#endif
- if (pmap != kernel_pmap)
+ if (pmap != kernel_pmap) {
newpte |= PG_U;
- pte_store(pte, newpte);
+ pte_store_z(pte, newpte);
+ } else {
+ pte_store(pte, newpte);
+ }
sched_unpin();
return (mpte);
}
Index: sys/i386/include/pmap_nopae.h
===================================================================
--- sys/i386/include/pmap_nopae.h
+++ sys/i386/include/pmap_nopae.h
@@ -86,6 +86,7 @@
#define pte_store(ptep, pte) do { \
*(u_int *)(ptep) = (u_int)(pte); \
} while (0)
+#define pte_store_z(ptep, pte) pte_store(ptep, pte)
#define pte_load(ptep) atomic_load_int(ptep)
extern pt_entry_t PTmap[];
Index: sys/i386/include/pmap_pae.h
===================================================================
--- sys/i386/include/pmap_pae.h
+++ sys/i386/include/pmap_pae.h
@@ -101,6 +101,16 @@
#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)
+static inline void
+pte_store_z(pt_entry_t *ptep, pt_entry_t pte)
+{
+ uint32_t *p;
+
+ p = (void *)ptep;
+ *(p + 1) = (uint32_t)(pte >> 32);
+ __compiler_membar();
+ *p = (uint32_t)pte;
+}
#define pte_load(ptep) atomic_load_acq_64_i586(ptep)
extern pdpt_entry_t *IdlePDPT;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Mar 22, 1:59 PM (6 m, 44 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30088642
Default Alt Text
D19226.id54047.diff (1 KB)
Attached To
Mode
D19226: i386 PAE: avoid atomic for pte_store().
Attached
Detach File
Event Timeline
Log In to Comment