28 lines
		
	
	
		
			504 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			504 B
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| .define _load_kernel_cr3
 | |
| .define _last_cr3
 | |
| 
 | |
| #define LOADKERNELCR3			;\
 | |
| 	inc	(_cr3switch)		;\
 | |
| 	mov	eax,	(_kernel_cr3)	;\
 | |
| 	cmp	(_last_cr3), eax	;\
 | |
| 	jz	9f			;\
 | |
| 	push	_load_kernel_cr3	;\
 | |
| 	call	_level0			;\
 | |
| 	pop	eax			;\
 | |
| 	mov	eax,	(_kernel_cr3)	;\
 | |
| 	mov	(_last_cr3), eax	;\
 | |
| 	inc	(_cr3reload)		;\
 | |
| 9:
 | |
| 
 | |
| #define LOADCR3WITHEAX(type, newcr3)	;\
 | |
| sseg	inc	(_cr3switch)		;\
 | |
| sseg	mov	eax,	newcr3		;\
 | |
| sseg	cmp	(_last_cr3), eax	;\
 | |
| 	jz	8f			;\
 | |
| 	mov	cr3, eax		;\
 | |
| sseg	inc	(_cr3reload)		;\
 | |
| sseg	mov	(_last_cr3), eax	;\
 | |
| 8:
 | |
| 
 | 
