Subversion Repositories HelenOS

Rev

Rev 1881 | Rev 1899 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1881 Rev 1887
Line 112... Line 112...
112
	SET_TLB_TAG(g1, MEM_CONTEXT_KERNEL)
112
	SET_TLB_TAG(g1, MEM_CONTEXT_KERNEL)
113
	stxa %g1, [VA_DMMU_TAG_ACCESS] %asi			
113
	stxa %g1, [VA_DMMU_TAG_ACCESS] %asi			
114
	membar #Sync
114
	membar #Sync
115
 
115
 
116
#define SET_TLB_DATA(r1, r2, imm) \
116
#define SET_TLB_DATA(r1, r2, imm) \
117
	set TTE_L | TTE_CP | TTE_P | TTE_W | LMA | imm, %r1; \
117
	set TTE_CV | TTE_CP | TTE_P | LMA | imm, %r1; \
118
	set PAGESIZE_4M, %r2; \
118
	set PAGESIZE_4M, %r2; \
119
	sllx %r2, TTE_SIZE_SHIFT, %r2; \
119
	sllx %r2, TTE_SIZE_SHIFT, %r2; \
120
	or %r1, %r2, %r1; \
120
	or %r1, %r2, %r1; \
121
	mov 1, %r2; \
121
	mov 1, %r2; \
122
	sllx %r2, TTE_V_SHIFT, %r2; \
122
	sllx %r2, TTE_V_SHIFT, %r2; \
123
	or %r1, %r2, %r1;
123
	or %r1, %r2, %r1;
124
	
124
	
125
	! write DTLB data and install the kernel mapping
125
	! write DTLB data and install the kernel mapping
126
	SET_TLB_DATA(g1, g2, 0)			! use non-global mapping
126
	SET_TLB_DATA(g1, g2, TTE_L | TTE_W)	! use non-global mapping
127
	stxa %g1, [%g0] ASI_DTLB_DATA_IN_REG		
127
	stxa %g1, [%g0] ASI_DTLB_DATA_IN_REG		
128
	membar #Sync
128
	membar #Sync
129
 
129
 
130
	/*
130
	/*
131
	 * Because we cannot use global mappings (because we want to
131
	 * Because we cannot use global mappings (because we want to
Line 138... Line 138...
138
	SET_TLB_TAG(g1, MEM_CONTEXT_TEMP)
138
	SET_TLB_TAG(g1, MEM_CONTEXT_TEMP)
139
	stxa %g1, [VA_DMMU_TAG_ACCESS] %asi			
139
	stxa %g1, [VA_DMMU_TAG_ACCESS] %asi			
140
	membar #Sync
140
	membar #Sync
141
 
141
 
142
	! write DTLB data and install the kernel mapping in context 1
142
	! write DTLB data and install the kernel mapping in context 1
143
	SET_TLB_DATA(g1, g2, 0)			! use non-global mapping
143
	SET_TLB_DATA(g1, g2, TTE_W)			! use non-global mapping
144
	stxa %g1, [%g0] ASI_DTLB_DATA_IN_REG		
144
	stxa %g1, [%g0] ASI_DTLB_DATA_IN_REG		
145
	membar #Sync
145
	membar #Sync
146
	
146
	
147
	/*
147
	/*
148
	 * Now is time to take over the IMMU.
148
	 * Now is time to take over the IMMU.
Line 194... Line 194...
194
	mov VA_DMMU_TAG_ACCESS, %g2
194
	mov VA_DMMU_TAG_ACCESS, %g2
195
	stxa %g1, [%g2] ASI_IMMU
195
	stxa %g1, [%g2] ASI_IMMU
196
	flush %g5
196
	flush %g5
197
 
197
 
198
	! write ITLB data and install the permanent kernel mapping in context 0
198
	! write ITLB data and install the permanent kernel mapping in context 0
199
	SET_TLB_DATA(g1, g2, 0)			! use non-global mapping
199
	SET_TLB_DATA(g1, g2, TTE_L)		! use non-global mapping
200
	stxa %g1, [%g0] ASI_ITLB_DATA_IN_REG		
200
	stxa %g1, [%g0] ASI_ITLB_DATA_IN_REG		
201
	flush %g5
201
	flush %g5
202
 
202
 
203
	! switch to context 0
203
	! switch to context 0
204
	stxa %g0, [VA_PRIMARY_CONTEXT_REG] %asi	! ASI_DMMU is correct here !!!
204
	stxa %g0, [VA_PRIMARY_CONTEXT_REG] %asi	! ASI_DMMU is correct here !!!