Subversion Repositories HelenOS-historic

Rev

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