| /* |
| * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) |
| * Licensed under the GPL |
| */ |
| |
| #include "linux/kernel.h" |
| #include "asm/current.h" |
| #include "asm/page.h" |
| #include "asm/signal.h" |
| #include "asm/ptrace.h" |
| #include "asm/uaccess.h" |
| #include "asm/mmu_context.h" |
| #include "tlb.h" |
| #include "skas.h" |
| #include "um_mmu.h" |
| #include "os.h" |
| |
| void flush_thread_skas(void) |
| { |
| void *data = NULL; |
| unsigned long end = proc_mm ? task_size : CONFIG_STUB_START; |
| int ret; |
| |
| ret = unmap(¤t->mm->context.skas.id, 0, end, 1, &data); |
| if(ret){ |
| printk("flush_thread_skas - clearing address space failed, " |
| "err = %d\n", ret); |
| force_sig(SIGKILL, current); |
| } |
| |
| switch_mm_skas(¤t->mm->context.skas.id); |
| } |
| |
| void start_thread_skas(struct pt_regs *regs, unsigned long eip, |
| unsigned long esp) |
| { |
| set_fs(USER_DS); |
| PT_REGS_IP(regs) = eip; |
| PT_REGS_SP(regs) = esp; |
| } |