version 1.124, 2016/05/15 07:17:53 |
version 1.125, 2016/05/26 07:24:55 |
Line 192 __KERNEL_RCSID(0, "$NetBSD$"); |
|
Line 192 __KERNEL_RCSID(0, "$NetBSD$"); |
|
* instruction just clears the page table entry. |
* instruction just clears the page table entry. |
*/ |
*/ |
#define fillkpt \ |
#define fillkpt \ |
|
cmpl $0,%ecx ; /* zero-sized? */ \ |
|
je 2f ; \ |
1: movl $0,(PDE_SIZE-4)(%ebx) ; /* upper 32 bits: 0 */ \ |
1: movl $0,(PDE_SIZE-4)(%ebx) ; /* upper 32 bits: 0 */ \ |
movl %eax,(%ebx) ; /* store phys addr */ \ |
movl %eax,(%ebx) ; /* store phys addr */ \ |
addl $PDE_SIZE,%ebx ; /* next PTE/PDE */ \ |
addl $PDE_SIZE,%ebx ; /* next PTE/PDE */ \ |
addl $PAGE_SIZE,%eax ; /* next phys page */ \ |
addl $PAGE_SIZE,%eax ; /* next phys page */ \ |
loop 1b ; |
loop 1b ; \ |
|
2: ; |
|
|
/* |
/* |
* fillkpt_nox - Same as fillkpt, but sets the NX/XD bit. |
* fillkpt_nox - Same as fillkpt, but sets the NX/XD bit. |
*/ |
*/ |
#define fillkpt_nox \ |
#define fillkpt_nox \ |
|
cmpl $0,%ecx ; /* zero-sized? */ \ |
|
je 2f ; \ |
pushl %ebp ; \ |
pushl %ebp ; \ |
movl RELOC(nox_flag),%ebp ; \ |
movl RELOC(nox_flag),%ebp ; \ |
1: movl %ebp,(PDE_SIZE-4)(%ebx) ; /* upper 32 bits: NX */ \ |
1: movl %ebp,(PDE_SIZE-4)(%ebx) ; /* upper 32 bits: NX */ \ |
Line 209 __KERNEL_RCSID(0, "$NetBSD$"); |
|
Line 214 __KERNEL_RCSID(0, "$NetBSD$"); |
|
addl $PDE_SIZE,%ebx ; /* next PTE/PDE */ \ |
addl $PDE_SIZE,%ebx ; /* next PTE/PDE */ \ |
addl $PAGE_SIZE,%eax ; /* next phys page */ \ |
addl $PAGE_SIZE,%eax ; /* next phys page */ \ |
loop 1b ; \ |
loop 1b ; \ |
popl %ebp ; |
popl %ebp ; \ |
|
2: ; |
|
|
/* |
/* |
* killkpt - Destroy a kernel page table |
* killkpt - Destroy a kernel page table |