Subversion Repositories HelenOS

Rev

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

Rev 2131 Rev 2292
Line 34... Line 34...
34
 
34
 
35
#include <arch/mm/as.h>
35
#include <arch/mm/as.h>
36
#include <arch/mm/asid.h>
36
#include <arch/mm/asid.h>
37
#include <arch/mm/page.h>
37
#include <arch/mm/page.h>
38
#include <genarch/mm/as_ht.h>
38
#include <genarch/mm/as_ht.h>
-
 
39
#include <genarch/mm/page_ht.h>
39
#include <genarch/mm/asid_fifo.h>
40
#include <genarch/mm/asid_fifo.h>
40
#include <mm/asid.h>
41
#include <mm/asid.h>
41
#include <arch.h>
-
 
42
#include <arch/barrier.h>
42
#include <arch/barrier.h>
43
#include <synch/spinlock.h>
-
 
44
 
43
 
45
/** Architecture dependent address space init. */
44
/** Architecture dependent address space init. */
46
void as_arch_init(void)
45
void as_arch_init(void)
47
{
46
{
48
    as_operations = &as_ht_operations;
47
    as_operations = &as_ht_operations;
Line 53... Line 52...
53
 *
52
 *
54
 * @param as Address space.
53
 * @param as Address space.
55
 */
54
 */
56
void as_install_arch(as_t *as)
55
void as_install_arch(as_t *as)
57
{
56
{
58
    ipl_t ipl;
-
 
59
    region_register rr;
57
    region_register rr;
60
    int i;
58
    int i;
61
   
59
   
62
    ipl = interrupts_disable();
-
 
63
    spinlock_lock(&as->lock);
-
 
64
   
-
 
65
    ASSERT(as->asid != ASID_INVALID);
60
    ASSERT(as->asid != ASID_INVALID);
66
   
61
   
67
    /*
62
    /*
68
     * Load respective ASID (7 consecutive RIDs) to
63
     * Load respective ASID (7 consecutive RIDs) to
69
     * region registers.
64
     * region registers.
Line 78... Line 73...
78
        rr.map.ps = PAGE_WIDTH;
73
        rr.map.ps = PAGE_WIDTH;
79
        rr_write(i, rr.word);
74
        rr_write(i, rr.word);
80
    }
75
    }
81
    srlz_d();
76
    srlz_d();
82
    srlz_i();
77
    srlz_i();
83
   
-
 
84
    spinlock_unlock(&as->lock);
-
 
85
    interrupts_restore(ipl);
-
 
86
}
78
}
87
 
79
 
88
/** @}
80
/** @}
89
 */
81
 */