26c26
< * $FreeBSD: head/sys/sparc64/include/tlb.h 85234 2001-10-20 15:58:31Z jake $
---
> * $FreeBSD: head/sys/sparc64/include/tlb.h 88629 2001-12-29 07:07:35Z jake $
84a85,97
> /*
> * Some tlb operations must be atomical, so no interrupt or trap can be allowed
> * while they are in progress. Traps should not happen, but interrupts need to
> * be explicitely disabled. critical_enter() cannot be used here, since it only
> * disables soft interrupts.
> * XXX: is something like this needed elsewhere, too?
> */
> #define TLB_ATOMIC_START(s) do { \
> (s) = rdpr(pstate); \
> wrpr(pstate, (s) & ~PSTATE_IE, 0); \
> } while (0)
> #define TLB_ATOMIC_END(s) wrpr(pstate, (s), 0)
>
85a99,105
> tlb_dtlb_context_primary_demap(void)
> {
> stxa(TLB_DEMAP_PRIMARY | TLB_DEMAP_CONTEXT, ASI_DMMU_DEMAP, 0);
> membar(Sync);
> }
>
> static __inline void
96a117
> membar(Sync);
104a126,128
> u_long pst;
>
> TLB_ATOMIC_START(pst);
108a133
> TLB_ATOMIC_END(pst);
113a139,141
> u_long pst;
>
> TLB_ATOMIC_START(pst);
116a145
> TLB_ATOMIC_END(pst);
119a149,155
> tlb_itlb_context_primary_demap(void)
> {
> stxa(TLB_DEMAP_PRIMARY | TLB_DEMAP_CONTEXT, ASI_IMMU_DEMAP, 0);
> membar(Sync);
> }
>
> static __inline void
130a167
> membar(Sync);
139a177,179
> u_long pst;
>
> TLB_ATOMIC_START(pst);
150a191
> TLB_ATOMIC_END(pst);
153a195,203
> tlb_context_primary_demap(u_int tlb)
> {
> if (tlb & TLB_DTLB)
> tlb_dtlb_context_primary_demap();
> if (tlb & TLB_ITLB)
> tlb_itlb_context_primary_demap();
> }
>
> static __inline void
155a206,208
> u_long pst;
>
> TLB_ATOMIC_START(pst);
158a212
> TLB_ATOMIC_END(pst);
< * $FreeBSD: head/sys/sparc64/include/tlb.h 85234 2001-10-20 15:58:31Z jake $
---
> * $FreeBSD: head/sys/sparc64/include/tlb.h 88629 2001-12-29 07:07:35Z jake $
84a85,97
> /*
> * Some tlb operations must be atomical, so no interrupt or trap can be allowed
> * while they are in progress. Traps should not happen, but interrupts need to
> * be explicitely disabled. critical_enter() cannot be used here, since it only
> * disables soft interrupts.
> * XXX: is something like this needed elsewhere, too?
> */
> #define TLB_ATOMIC_START(s) do { \
> (s) = rdpr(pstate); \
> wrpr(pstate, (s) & ~PSTATE_IE, 0); \
> } while (0)
> #define TLB_ATOMIC_END(s) wrpr(pstate, (s), 0)
>
85a99,105
> tlb_dtlb_context_primary_demap(void)
> {
> stxa(TLB_DEMAP_PRIMARY | TLB_DEMAP_CONTEXT, ASI_DMMU_DEMAP, 0);
> membar(Sync);
> }
>
> static __inline void
96a117
> membar(Sync);
104a126,128
> u_long pst;
>
> TLB_ATOMIC_START(pst);
108a133
> TLB_ATOMIC_END(pst);
113a139,141
> u_long pst;
>
> TLB_ATOMIC_START(pst);
116a145
> TLB_ATOMIC_END(pst);
119a149,155
> tlb_itlb_context_primary_demap(void)
> {
> stxa(TLB_DEMAP_PRIMARY | TLB_DEMAP_CONTEXT, ASI_IMMU_DEMAP, 0);
> membar(Sync);
> }
>
> static __inline void
130a167
> membar(Sync);
139a177,179
> u_long pst;
>
> TLB_ATOMIC_START(pst);
150a191
> TLB_ATOMIC_END(pst);
153a195,203
> tlb_context_primary_demap(u_int tlb)
> {
> if (tlb & TLB_DTLB)
> tlb_dtlb_context_primary_demap();
> if (tlb & TLB_ITLB)
> tlb_itlb_context_primary_demap();
> }
>
> static __inline void
155a206,208
> u_long pst;
>
> TLB_ATOMIC_START(pst);
158a212
> TLB_ATOMIC_END(pst);