diff options
| author | Tony Luck <aegl@agluck-desktop.(none)> | 2009-03-31 17:25:08 -0400 |
|---|---|---|
| committer | Tony Luck <tony.luck@intel.com> | 2009-03-31 17:25:08 -0400 |
| commit | c66b31f3926165bc1d4128adc97a064dcbab421a (patch) | |
| tree | 13be75d33bd2b9d4ec45ec512ac38a2e7069062e /arch/ia64/mm/init.c | |
| parent | 50fbe56c127efde659c686495eb1f925fd84ff0a (diff) | |
| parent | 7120569c76028a6883697b7643564f0c419cfe07 (diff) | |
Pull pvops into release branch
Diffstat (limited to 'arch/ia64/mm/init.c')
| -rw-r--r-- | arch/ia64/mm/init.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index 56e12903973c..8503d534794f 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c | |||
| @@ -35,6 +35,7 @@ | |||
| 35 | #include <asm/uaccess.h> | 35 | #include <asm/uaccess.h> |
| 36 | #include <asm/unistd.h> | 36 | #include <asm/unistd.h> |
| 37 | #include <asm/mca.h> | 37 | #include <asm/mca.h> |
| 38 | #include <asm/paravirt.h> | ||
| 38 | 39 | ||
| 39 | DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); | 40 | DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); |
| 40 | 41 | ||
| @@ -259,6 +260,7 @@ put_kernel_page (struct page *page, unsigned long address, pgprot_t pgprot) | |||
| 259 | static void __init | 260 | static void __init |
| 260 | setup_gate (void) | 261 | setup_gate (void) |
| 261 | { | 262 | { |
| 263 | void *gate_section; | ||
| 262 | struct page *page; | 264 | struct page *page; |
| 263 | 265 | ||
| 264 | /* | 266 | /* |
| @@ -266,10 +268,11 @@ setup_gate (void) | |||
| 266 | * headers etc. and once execute-only page to enable | 268 | * headers etc. and once execute-only page to enable |
| 267 | * privilege-promotion via "epc": | 269 | * privilege-promotion via "epc": |
| 268 | */ | 270 | */ |
| 269 | page = virt_to_page(ia64_imva(__start_gate_section)); | 271 | gate_section = paravirt_get_gate_section(); |
| 272 | page = virt_to_page(ia64_imva(gate_section)); | ||
| 270 | put_kernel_page(page, GATE_ADDR, PAGE_READONLY); | 273 | put_kernel_page(page, GATE_ADDR, PAGE_READONLY); |
| 271 | #ifdef HAVE_BUGGY_SEGREL | 274 | #ifdef HAVE_BUGGY_SEGREL |
| 272 | page = virt_to_page(ia64_imva(__start_gate_section + PAGE_SIZE)); | 275 | page = virt_to_page(ia64_imva(gate_section + PAGE_SIZE)); |
| 273 | put_kernel_page(page, GATE_ADDR + PAGE_SIZE, PAGE_GATE); | 276 | put_kernel_page(page, GATE_ADDR + PAGE_SIZE, PAGE_GATE); |
| 274 | #else | 277 | #else |
| 275 | put_kernel_page(page, GATE_ADDR + PERCPU_PAGE_SIZE, PAGE_GATE); | 278 | put_kernel_page(page, GATE_ADDR + PERCPU_PAGE_SIZE, PAGE_GATE); |
| @@ -667,8 +670,8 @@ mem_init (void) | |||
| 667 | * code can tell them apart. | 670 | * code can tell them apart. |
| 668 | */ | 671 | */ |
| 669 | for (i = 0; i < NR_syscalls; ++i) { | 672 | for (i = 0; i < NR_syscalls; ++i) { |
| 670 | extern unsigned long fsyscall_table[NR_syscalls]; | ||
| 671 | extern unsigned long sys_call_table[NR_syscalls]; | 673 | extern unsigned long sys_call_table[NR_syscalls]; |
| 674 | unsigned long *fsyscall_table = paravirt_get_fsyscall_table(); | ||
| 672 | 675 | ||
| 673 | if (!fsyscall_table[i] || nolwsys) | 676 | if (!fsyscall_table[i] || nolwsys) |
| 674 | fsyscall_table[i] = sys_call_table[i] | 1; | 677 | fsyscall_table[i] = sys_call_table[i] | 1; |
