Author: rmh Date: 2006-03-02 10:39:47 +0000 (Thu, 02 Mar 2006) New Revision: 1287
Modified: trunk/kfreebsd-6/debian/changelog trunk/kfreebsd-6/debian/patches/005_binutils.diff Log: - patches/binutils.diff: Add binutils fixes for amd64 code. Modified: trunk/kfreebsd-6/debian/changelog =================================================================== --- trunk/kfreebsd-6/debian/changelog 2006-03-02 09:24:02 UTC (rev 1286) +++ trunk/kfreebsd-6/debian/changelog 2006-03-02 10:39:47 UTC (rev 1287) @@ -4,6 +4,7 @@ * New upstream version pulled from RELENG_6 CVSup. - ReiserFS support. (Closes: #335019) * Disabled the non-compiling hwpmc driver. + [ Robert Millan ] * Merge 5.x branch changes (from rev 654 to rev 1058) * Add src/usr.sbin/config into the source and build/use it dynamicaly. @@ -40,10 +41,12 @@ - arch/amd64/em64t-p4.config: New. P4 config. - patches/907_cpu_class.diff: Set hw.machine to "x86_64". This improves compatibility with old config.sub scripts. + * patches/binutils.diff: Add binutils fixes for amd64 code. + [ Aurelien Jarno ] * Fix a remote denial of service in NFS server (FreeBSD-SA-06:10.nfs / CVE-2006-0900). - -- Robert Millan <[EMAIL PROTECTED]> Tue, 28 Feb 2006 12:42:18 +0100 + -- Robert Millan <[EMAIL PROTECTED]> Thu, 2 Mar 2006 11:38:52 +0100 kfreebsd-5 (5.3-6) unstable; urgency=low Modified: trunk/kfreebsd-6/debian/patches/005_binutils.diff =================================================================== --- trunk/kfreebsd-6/debian/patches/005_binutils.diff 2006-03-02 09:24:02 UTC (rev 1286) +++ trunk/kfreebsd-6/debian/patches/005_binutils.diff 2006-03-02 10:39:47 UTC (rev 1287) @@ -110,3 +110,338 @@ ret ENTRY(x86_gettid) +--- sys/amd64/amd64/cpu_switch.S.old 2006-03-01 20:12:04.000000000 +0100 ++++ sys/amd64/amd64/cpu_switch.S 2006-03-01 20:04:59.000000000 +0100 +@@ -107,10 +107,10 @@ + jz 1f /* no, skip over */ + + /* Save segment selector numbers */ +- movl %ds,PCB_DS(%r8) +- movl %es,PCB_ES(%r8) +- movl %fs,PCB_FS(%r8) +- movl %gs,PCB_GS(%r8) ++ movw %ds,PCB_DS(%r8) ++ movw %es,PCB_ES(%r8) ++ movw %fs,PCB_FS(%r8) ++ movw %gs,PCB_GS(%r8) + jmp 2f + 1: + +@@ -191,14 +191,14 @@ + jz 1f /* no, skip over */ + + /* Restore segment selector numbers */ +- movl PCB_DS(%r8),%ds +- movl PCB_ES(%r8),%es +- movl PCB_FS(%r8),%fs ++ movw PCB_DS(%r8),%ds ++ movw PCB_ES(%r8),%es ++ movw PCB_FS(%r8),%fs + + /* Restore userland %gs while preserving kernel gsbase */ + movl $MSR_GSBASE,%ecx + rdmsr +- movl PCB_GS(%r8),%gs ++ movw PCB_GS(%r8),%gs + wrmsr + jmp 2f + 1: +--- sys/amd64/ia32/ia32_signal.c~ 2006-03-01 22:23:22.000000000 +0100 ++++ sys/amd64/ia32/ia32_signal.c 2006-03-01 22:44:47.000000000 +0100 +@@ -197,8 +197,8 @@ + sf.sf_uc.uc_mcontext.mc_onstack = (oonstack) ? 1 : 0; + sf.sf_uc.uc_mcontext.mc_gs = rgs(); + sf.sf_uc.uc_mcontext.mc_fs = rfs(); +- __asm __volatile("movl %%es,%0" : "=rm" (sf.sf_uc.uc_mcontext.mc_es)); +- __asm __volatile("movl %%ds,%0" : "=rm" (sf.sf_uc.uc_mcontext.mc_ds)); ++ __asm __volatile("mov %%es,%0" : "=rm" (sf.sf_uc.uc_mcontext.mc_es)); ++ __asm __volatile("mov %%ds,%0" : "=rm" (sf.sf_uc.uc_mcontext.mc_ds)); + sf.sf_uc.uc_mcontext.mc_edi = regs->tf_rdi; + sf.sf_uc.uc_mcontext.mc_esi = regs->tf_rsi; + sf.sf_uc.uc_mcontext.mc_ebp = regs->tf_rbp; +@@ -309,8 +309,8 @@ + sf.sf_uc.uc_mcontext.mc_onstack = (oonstack) ? 1 : 0; + sf.sf_uc.uc_mcontext.mc_gs = rgs(); + sf.sf_uc.uc_mcontext.mc_fs = rfs(); +- __asm __volatile("movl %%es,%0" : "=rm" (sf.sf_uc.uc_mcontext.mc_es)); +- __asm __volatile("movl %%ds,%0" : "=rm" (sf.sf_uc.uc_mcontext.mc_ds)); ++ __asm __volatile("mov %%es,%0" : "=rm" (sf.sf_uc.uc_mcontext.mc_es)); ++ __asm __volatile("mov %%ds,%0" : "=rm" (sf.sf_uc.uc_mcontext.mc_ds)); + sf.sf_uc.uc_mcontext.mc_edi = regs->tf_rdi; + sf.sf_uc.uc_mcontext.mc_esi = regs->tf_rsi; + sf.sf_uc.uc_mcontext.mc_ebp = regs->tf_rbp; +--- sys/amd64/include/pcpu.h~ 2006-03-01 23:10:56.000000000 +0100 ++++ sys/amd64/include/pcpu.h 2006-03-01 23:40:19.000000000 +0100 +@@ -80,7 +80,7 @@ + #define __PCPU_PTR(name) __extension__ ({ \ + __pcpu_type(name) *__p; \ + \ +- __asm __volatile("movq %%gs:%1,%0; addq %2,%0" \ ++ __asm __volatile("mov %%gs:%1,%0; addq %2,%0" \ + : "=r" (__p) \ + : "m" (*(struct pcpu *)(__pcpu_offset(pc_prvspace))), \ + "i" (__pcpu_offset(name))); \ +@@ -96,25 +96,25 @@ + \ + if (sizeof(__result) == 1) { \ + u_char __b; \ +- __asm __volatile("movb %%gs:%1,%0" \ ++ __asm __volatile("mov %%gs:%1,%0" \ + : "=r" (__b) \ + : "m" (*(u_char *)(__pcpu_offset(name)))); \ + __result = *(__pcpu_type(name) *)&__b; \ + } else if (sizeof(__result) == 2) { \ + u_short __w; \ +- __asm __volatile("movw %%gs:%1,%0" \ ++ __asm __volatile("mov %%gs:%1,%0" \ + : "=r" (__w) \ + : "m" (*(u_short *)(__pcpu_offset(name)))); \ + __result = *(__pcpu_type(name) *)&__w; \ + } else if (sizeof(__result) == 4) { \ + u_int __i; \ +- __asm __volatile("movl %%gs:%1,%0" \ ++ __asm __volatile("mov %%gs:%1,%0" \ + : "=r" (__i) \ + : "m" (*(u_int *)(__pcpu_offset(name)))); \ + __result = *(__pcpu_type(name) *)&__i; \ + } else if (sizeof(__result) == 8) { \ + u_long __l; \ +- __asm __volatile("movq %%gs:%1,%0" \ ++ __asm __volatile("mov %%gs:%1,%0" \ + : "=r" (__l) \ + : "m" (*(u_long *)(__pcpu_offset(name)))); \ + __result = *(__pcpu_type(name) *)&__l; \ +@@ -134,25 +134,25 @@ + if (sizeof(__val) == 1) { \ + u_char __b; \ + __b = *(u_char *)&__val; \ +- __asm __volatile("movb %1,%%gs:%0" \ ++ __asm __volatile("mov %1,%%gs:%0" \ + : "=m" (*(u_char *)(__pcpu_offset(name))) \ + : "r" (__b)); \ + } else if (sizeof(__val) == 2) { \ + u_short __w; \ + __w = *(u_short *)&__val; \ +- __asm __volatile("movw %1,%%gs:%0" \ ++ __asm __volatile("mov %1,%%gs:%0" \ + : "=m" (*(u_short *)(__pcpu_offset(name))) \ + : "r" (__w)); \ + } else if (sizeof(__val) == 4) { \ + u_int __i; \ + __i = *(u_int *)&__val; \ +- __asm __volatile("movl %1,%%gs:%0" \ ++ __asm __volatile("mov %1,%%gs:%0" \ + : "=m" (*(u_int *)(__pcpu_offset(name))) \ + : "r" (__i)); \ + } else if (sizeof(__val) == 8) { \ + u_long __l; \ + __l = *(u_long *)&__val; \ +- __asm __volatile("movq %1,%%gs:%0" \ ++ __asm __volatile("mov %1,%%gs:%0" \ + : "=m" (*(u_long *)(__pcpu_offset(name))) \ + : "r" (__l)); \ + } else { \ +@@ -169,7 +169,7 @@ + { + struct thread *td; + +- __asm __volatile("movq %%gs:0,%0" : "=r" (td)); ++ __asm __volatile("mov %%gs:0,%0" : "=r" (td)); + return (td); + } + #define curthread (__curthread()) +--- sys/amd64/include/cpufunc.h~ 2006-03-02 00:05:29.000000000 +0100 ++++ sys/amd64/include/cpufunc.h 2006-03-02 11:11:34.000000000 +0100 +@@ -482,7 +482,7 @@ + rfs(void) + { + u_int sel; +- __asm __volatile("movl %%fs,%0" : "=rm" (sel)); ++ __asm __volatile("mov %%fs,%0" : "=rm" (sel)); + return (sel); + } + +@@ -490,7 +490,7 @@ + rgs(void) + { + u_int sel; +- __asm __volatile("movl %%gs,%0" : "=rm" (sel)); ++ __asm __volatile("mov %%gs,%0" : "=rm" (sel)); + return (sel); + } + +@@ -498,20 +498,20 @@ + rss(void) + { + u_int sel; +- __asm __volatile("movl %%ss,%0" : "=rm" (sel)); ++ __asm __volatile("mov %%ss,%0" : "=rm" (sel)); + return (sel); + } + + static __inline void + load_ds(u_int sel) + { +- __asm __volatile("movl %0,%%ds" : : "rm" (sel)); ++ __asm __volatile("mov %0,%%ds" : : "rm" (sel)); + } + + static __inline void + load_es(u_int sel) + { +- __asm __volatile("movl %0,%%es" : : "rm" (sel)); ++ __asm __volatile("mov %0,%%es" : : "rm" (sel)); + } + + #ifdef _KERNEL +@@ -526,7 +526,7 @@ + + /* Preserve the fsbase value across the selector load */ + fsbase = MSR_FSBASE; +- __asm __volatile("rdmsr; movl %0,%%fs; wrmsr" ++ __asm __volatile("rdmsr; mov %0,%%fs; wrmsr" + : : "rm" (sel), "c" (fsbase) : "eax", "edx"); + } + +@@ -544,7 +544,7 @@ + * being trashed happens to be the kernel gsbase at the time. + */ + gsbase = MSR_GSBASE; +- __asm __volatile("pushfq; cli; rdmsr; movl %0,%%gs; wrmsr; popfq" ++ __asm __volatile("pushfq; cli; rdmsr; mov %0,%%gs; wrmsr; popfq" + : : "rm" (sel), "c" (gsbase) : "eax", "edx"); + } + #else +@@ -552,13 +552,13 @@ + static __inline void + load_fs(u_int sel) + { +- __asm __volatile("movl %0,%%fs" : : "rm" (sel)); ++ __asm __volatile("mov %0,%%fs" : : "rm" (sel)); + } + + static __inline void + load_gs(u_int sel) + { +- __asm __volatile("movl %0,%%gs" : : "rm" (sel)); ++ __asm __volatile("mov %0,%%gs" : : "rm" (sel)); + } + #endif + +--- sys/amd64/linux32/linux32_sysvec.c~ 2006-03-02 00:05:31.000000000 +0100 ++++ sys/amd64/linux32/linux32_sysvec.c 2006-03-02 11:14:09.000000000 +0100 +@@ -345,9 +345,9 @@ + frame.sf_sc.uc_mcontext.sc_mask = frame.sf_sc.uc_sigmask.__bits[0]; + frame.sf_sc.uc_mcontext.sc_gs = rgs(); + frame.sf_sc.uc_mcontext.sc_fs = rfs(); +- __asm __volatile("movl %%es,%0" : ++ __asm __volatile("mov %%es,%0" : + "=rm" (frame.sf_sc.uc_mcontext.sc_es)); +- __asm __volatile("movl %%ds,%0" : ++ __asm __volatile("mov %%ds,%0" : + "=rm" (frame.sf_sc.uc_mcontext.sc_ds)); + frame.sf_sc.uc_mcontext.sc_edi = regs->tf_rdi; + frame.sf_sc.uc_mcontext.sc_esi = regs->tf_rsi; +@@ -474,8 +474,8 @@ + frame.sf_sc.sc_mask = lmask.__bits[0]; + frame.sf_sc.sc_gs = rgs(); + frame.sf_sc.sc_fs = rfs(); +- __asm __volatile("movl %%es,%0" : "=rm" (frame.sf_sc.sc_es)); +- __asm __volatile("movl %%ds,%0" : "=rm" (frame.sf_sc.sc_ds)); ++ __asm __volatile("mov %%es,%0" : "=rm" (frame.sf_sc.sc_es)); ++ __asm __volatile("mov %%ds,%0" : "=rm" (frame.sf_sc.sc_ds)); + frame.sf_sc.sc_edi = regs->tf_rdi; + frame.sf_sc.sc_esi = regs->tf_rsi; + frame.sf_sc.sc_ebp = regs->tf_rbp; +--- sys/i386/include/cpufunc.h~ 2006-03-02 00:09:10.000000000 +0100 ++++ sys/i386/include/cpufunc.h 2006-03-02 11:16:41.000000000 +0100 +@@ -452,7 +452,7 @@ + rfs(void) + { + u_int sel; +- __asm __volatile("movl %%fs,%0" : "=rm" (sel)); ++ __asm __volatile("mov %%fs,%0" : "=rm" (sel)); + return (sel); + } + +@@ -468,14 +468,14 @@ + rss(void) + { + u_int sel; +- __asm __volatile("movl %%ss,%0" : "=rm" (sel)); ++ __asm __volatile("mov %%ss,%0" : "=rm" (sel)); + return (sel); + } + + static __inline void + load_fs(u_int sel) + { +- __asm __volatile("movl %0,%%fs" : : "rm" (sel)); ++ __asm __volatile("mov %0,%%fs" : : "rm" (sel)); + } + + static __inline void +--- sys/amd64/ia32/ia32_sigtramp.S~ 2006-03-02 11:21:40.000000000 +0100 ++++ sys/amd64/ia32/ia32_sigtramp.S 2006-03-02 11:50:52.000000000 +0100 +@@ -45,10 +45,10 @@ + calll *IA32_SIGF_HANDLER(%esp) + leal IA32_SIGF_UC(%esp),%eax /* get ucontext */ + pushl %eax +- movl IA32_UC_GS(%eax),%gs /* restore %gs */ +- movl IA32_UC_FS(%eax),%fs /* restore %fs */ +- movl IA32_UC_ES(%eax),%es /* restore %es */ +- movl IA32_UC_DS(%eax),%ds /* restore %ds */ ++ mov IA32_UC_GS(%eax),%gs /* restore %gs */ ++ mov IA32_UC_FS(%eax),%fs /* restore %fs */ ++ mov IA32_UC_ES(%eax),%es /* restore %es */ ++ mov IA32_UC_DS(%eax),%ds /* restore %ds */ + movl $SYS_sigreturn,%eax + pushl %eax /* junk to fake return addr. */ + int $0x80 /* enter kernel with args */ +@@ -62,10 +62,10 @@ + calll *IA32_SIGF_HANDLER(%esp) + leal IA32_SIGF_UC4(%esp),%eax/* get ucontext */ + pushl %eax +- movl IA32_UC4_GS(%eax),%gs /* restore %gs */ +- movl IA32_UC4_FS(%eax),%fs /* restore %fs */ +- movl IA32_UC4_ES(%eax),%es /* restore %es */ +- movl IA32_UC4_DS(%eax),%ds /* restore %ds */ ++ mov IA32_UC4_GS(%eax),%gs /* restore %gs */ ++ mov IA32_UC4_FS(%eax),%fs /* restore %fs */ ++ mov IA32_UC4_ES(%eax),%es /* restore %es */ ++ mov IA32_UC4_DS(%eax),%ds /* restore %ds */ + movl $344,%eax /* 4.x SYS_sigreturn */ + pushl %eax /* junk to fake return addr. */ + int $0x80 /* enter kernel with args */ +--- sys/amd64/linux32/linux32_locore.s~ 2006-03-02 11:21:42.000000000 +0100 ++++ sys/amd64/linux32/linux32_locore.s 2006-03-02 11:51:44.000000000 +0100 +@@ -11,10 +11,10 @@ + NON_GPROF_ENTRY(linux_sigcode) + call *LINUX_SIGF_HANDLER(%esp) + leal LINUX_SIGF_SC(%esp),%ebx /* linux scp */ +- movl LINUX_SC_GS(%ebx),%gs +- movl LINUX_SC_FS(%ebx),%fs +- movl LINUX_SC_ES(%ebx),%es +- movl LINUX_SC_DS(%ebx),%ds ++ mov LINUX_SC_GS(%ebx),%gs ++ mov LINUX_SC_FS(%ebx),%fs ++ mov LINUX_SC_ES(%ebx),%es ++ mov LINUX_SC_DS(%ebx),%ds + movl %esp, %ebx /* pass sigframe */ + push %eax /* fake ret addr */ + movl $LINUX_SYS_linux_sigreturn,%eax /* linux_sigreturn() */ +@@ -25,10 +25,10 @@ + linux_rt_sigcode: + call *LINUX_RT_SIGF_HANDLER(%esp) + leal LINUX_RT_SIGF_UC(%esp),%ebx /* linux ucp */ +- movl LINUX_SC_GS(%ebx),%gs +- movl LINUX_SC_FS(%ebx),%fs +- movl LINUX_SC_ES(%ebx),%es +- movl LINUX_SC_DS(%ebx),%ds ++ mov LINUX_SC_GS(%ebx),%gs ++ mov LINUX_SC_FS(%ebx),%fs ++ mov LINUX_SC_ES(%ebx),%es ++ mov LINUX_SC_DS(%ebx),%ds + push %eax /* fake ret addr */ + movl $LINUX_SYS_linux_rt_sigreturn,%eax /* linux_rt_sigreturn() */ + int $0x80 /* enter kernel with args */ -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]