Rev 1891 | Rev 1903 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1891 | Rev 1892 | ||
---|---|---|---|
Line 64... | Line 64... | ||
64 | if (!tsb) |
64 | if (!tsb) |
65 | return -1; |
65 | return -1; |
66 | 66 | ||
67 | as->arch.itsb = (tsb_entry_t *) tsb; |
67 | as->arch.itsb = (tsb_entry_t *) tsb; |
68 | as->arch.dtsb = (tsb_entry_t *) (tsb + ITSB_ENTRY_COUNT * sizeof(tsb_entry_t)); |
68 | as->arch.dtsb = (tsb_entry_t *) (tsb + ITSB_ENTRY_COUNT * sizeof(tsb_entry_t)); |
- | 69 | memsetb((uintptr_t) as->arch.itsb, (ITSB_ENTRY_COUNT+DTSB_ENTRY_COUNT)*sizeof(tsb_entry_t), 0); |
|
69 | #endif |
70 | #endif |
70 | return 0; |
71 | return 0; |
71 | } |
72 | } |
72 | 73 | ||
73 | int as_destructor_arch(as_t *as) |
74 | int as_destructor_arch(as_t *as) |
Line 84... | Line 85... | ||
84 | int as_create_arch(as_t *as, int flags) |
85 | int as_create_arch(as_t *as, int flags) |
85 | { |
86 | { |
86 | #ifdef CONFIG_TSB |
87 | #ifdef CONFIG_TSB |
87 | ipl_t ipl; |
88 | ipl_t ipl; |
88 | 89 | ||
89 | memsetb((uintptr_t) as->arch.itsb, (ITSB_ENTRY_COUNT+DTSB_ENTRY_COUNT)*sizeof(tsb_entry_t), 0); |
- | |
90 | ipl = interrupts_disable(); |
90 | ipl = interrupts_disable(); |
91 | mutex_lock_active(&as->lock); /* completely unnecessary, but polite */ |
91 | mutex_lock_active(&as->lock); /* completely unnecessary, but polite */ |
92 | tsb_invalidate(as, 0, (count_t) -1); |
92 | tsb_invalidate(as, 0, (count_t) -1); |
93 | mutex_unlock(&as->lock); |
93 | mutex_unlock(&as->lock); |
94 | interrupts_restore(ipl); |
94 | interrupts_restore(ipl); |