--- ./arch/um/include/time_user.h.warnfix 2003-12-20 17:40:55.000000000 +0100 +++ ./arch/um/include/time_user.h 2003-12-25 15:51:45.000000000 +0100 @@ -14,4 +14,8 @@ extern unsigned long time_lock(void); extern void time_unlock(unsigned long); +struct timespec; + +extern int __do_posix_clock_monotonic_gettime(struct timespec *tp); + #endif --- ./arch/um/kernel/tt/ptproxy/wait.c.warnfix 2003-12-20 17:20:03.000000000 +0100 +++ ./arch/um/kernel/tt/ptproxy/wait.c 2003-12-25 15:45:02.000000000 +0100 @@ -60,7 +60,7 @@ pid = debugger->pid; ip = ptrace(PTRACE_PEEKUSER, pid, PT_IP_OFFSET, 0); - ip = IP_RESTART_SYSCALL(ip); + IP_RESTART_SYSCALL(ip); err = ptrace(PTRACE_POKEUSER, pid, PT_IP_OFFSET, ip); if(ptrace(PTRACE_POKEUSER, pid, PT_IP_OFFSET, ip) < 0) tracer_panic("real_wait_return : Failed to restart system " --- ./arch/um/kernel/tt/tlb.c.warnfix 2003-12-20 17:40:56.000000000 +0100 +++ ./arch/um/kernel/tt/tlb.c 2003-12-25 16:01:23.000000000 +0100 @@ -10,6 +10,7 @@ #include "asm/page.h" #include "asm/pgtable.h" #include "asm/uaccess.h" +#include "asm/tlbflush.h" #include "user_util.h" #include "mem_user.h" #include "os.h" --- ./arch/um/kernel/time.c.warnfix 2003-12-21 23:11:47.000000000 +0100 +++ ./arch/um/kernel/time.c 2003-12-25 15:52:02.000000000 +0100 @@ -92,7 +92,7 @@ panic("Couldn't set SIGVTALRM handler"); set_interval(ITIMER_VIRTUAL); - do_posix_clock_monotonic_gettime(&now); + __do_posix_clock_monotonic_gettime(&now); wall_to_monotonic.tv_sec = -now.tv_sec; wall_to_monotonic.tv_nsec = -now.tv_nsec; } --- ./arch/um/kernel/time_kern.c.warnfix 2003-12-21 23:11:47.000000000 +0100 +++ ./arch/um/kernel/time_kern.c 2003-12-25 15:52:03.000000000 +0100 @@ -30,6 +30,9 @@ return(HZ); } +int __do_posix_clock_monotonic_gettime(struct timespec *tp) { + return do_posix_clock_monotonic_gettime(tp); +} /* * Scheduler clock - returns current time in nanosec units. */ --- ./arch/um/sys-i386/fault.c.warnfix 2003-12-20 17:40:56.000000000 +0100 +++ ./arch/um/sys-i386/fault.c 2003-12-25 16:30:39.000000000 +0100 @@ -7,16 +7,25 @@ #include "sysdep/ptrace.h" #include "sysdep/sigcontext.h" -extern unsigned long search_exception_table(unsigned long addr); +/*These two are from asm-um/uaccess.h and linux/module.h, check them.*/ +struct exception_table_entry +{ + unsigned long insn; + unsigned long fixup; +}; + +const struct exception_table_entry *search_exception_tables(unsigned long add); +/*Compare this to arch/i386/mm/extable.c:fixup_exception()*/ int arch_fixup(unsigned long address, void *sc_ptr) { struct sigcontext *sc = sc_ptr; - unsigned long fixup; + const struct exception_table_entry *fixup; fixup = search_exception_tables(address); + if(fixup != 0){ - sc->eip = fixup; + sc->eip = fixup->fixup; return(1); } return(0);