Rev 755 | Rev 778 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 755 | Rev 756 | ||
---|---|---|---|
Line 78... | Line 78... | ||
78 | /** Protected by asidlock. Must be acquired before as->lock. */ |
78 | /** Protected by asidlock. Must be acquired before as->lock. */ |
79 | link_t as_with_asid_link; |
79 | link_t as_with_asid_link; |
80 | 80 | ||
81 | SPINLOCK_DECLARE(lock); |
81 | SPINLOCK_DECLARE(lock); |
82 | link_t as_area_head; |
82 | link_t as_area_head; |
- | 83 | ||
- | 84 | /** Page table pointer. Constant on architectures that use global page hash table. */ |
|
83 | pte_t *ptl0; |
85 | pte_t *page_table; |
- | 86 | ||
- | 87 | /** Address space identifier. Constant on architectures that do not support ASIDs.*/ |
|
- | 88 | asid_t asid; |
|
- | 89 | }; |
|
- | 90 | ||
- | 91 | struct as_operations { |
|
84 | asid_t asid; /**< Address space identifier. */ |
92 | pte_t *(* page_table_create)(int flags); |
85 | }; |
93 | }; |
- | 94 | typedef struct as_operations as_operations_t; |
|
86 | 95 | ||
87 | extern as_t *AS_KERNEL; |
96 | extern as_t *AS_KERNEL; |
- | 97 | extern as_operations_t *as_operations; |
|
88 | 98 | ||
- | 99 | extern void as_init(void); |
|
89 | extern as_t *as_create(pte_t *ptl0, int flags); |
100 | extern as_t *as_create(int flags); |
90 | extern as_area_t *as_area_create(as_t *as, as_area_type_t type, size_t size, __address base); |
101 | extern as_area_t *as_area_create(as_t *as, as_area_type_t type, size_t size, __address base); |
91 | extern void as_set_mapping(as_t *as, __address page, __address frame); |
102 | extern void as_set_mapping(as_t *as, __address page, __address frame); |
92 | extern int as_page_fault(__address page); |
103 | extern int as_page_fault(__address page); |
93 | extern void as_install(as_t *m); |
104 | extern void as_install(as_t *m); |
94 | 105 |