Subversion Repositories HelenOS

Rev

Rev 3128 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3128 Rev 3130
Line 38... Line 38...
38
 * mappings between virtual addresses and physical addresses.
38
 * mappings between virtual addresses and physical addresses.
39
 * Functions here are mere wrappers that call the real implementation.
39
 * Functions here are mere wrappers that call the real implementation.
40
 * They however, define the single interface.
40
 * They however, define the single interface.
41
 */
41
 */
42
 
42
 
-
 
43
/*
-
 
44
 * Note on memory prefetching and updating memory mappings, also described in:
-
 
45
 * AMD x86-64 Architecture Programmer's Manual, Volume 2, System Programming,
-
 
46
 * 7.2.1 Special Coherency Considerations.
-
 
47
 *
-
 
48
 * The processor which modifies a page table mapping can access prefetched data
-
 
49
 * from the old mapping.  In order to prevent this, we place a memory barrier
-
 
50
 * after a mapping is updated.
-
 
51
 *
-
 
52
 * We assume that the other processors are either not using the mapping yet
-
 
53
 * (i.e. during the bootstrap) or are executing the TLB shootdown code.  While
-
 
54
 * we don't care much about the former case, the processors in the latter case
-
 
55
 * will do an implicit serialization by virtue of running the TLB shootdown
-
 
56
 * interrupt handler.
-
 
57
 */
-
 
58
 
43
#include <mm/page.h>
59
#include <mm/page.h>
44
#include <arch/mm/page.h>
60
#include <arch/mm/page.h>
45
#include <arch/mm/asid.h>
61
#include <arch/mm/asid.h>
46
#include <mm/as.h>
62
#include <mm/as.h>
47
#include <mm/frame.h>
63
#include <mm/frame.h>