Merge branch 'arch-microblaze' into no-rebases
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 17 Nov 2012 03:28:43 +0000 (22:28 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 17 Nov 2012 03:28:43 +0000 (22:28 -0500)
1  2 
arch/arm64/Kconfig
arch/arm64/include/asm/processor.h
arch/arm64/include/asm/unistd.h
arch/sparc/Kconfig
arch/sparc/include/asm/processor_64.h
arch/sparc/kernel/systbls_64.S

diff --combined arch/arm64/Kconfig
index 138fc9cfd783d203642e4010863e80a054105584,15ac18a56c93b78a2d3972e7196ce89875c2135c..20b688c81956149cfe8e93a540b9b40c42ff2ac3
@@@ -1,13 -1,12 +1,14 @@@
  config ARM64
        def_bool y
        select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
+       select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
        select GENERIC_CLOCKEVENTS
        select GENERIC_HARDIRQS_NO_DEPRECATED
        select GENERIC_IOMAP
        select GENERIC_IRQ_PROBE
        select GENERIC_IRQ_SHOW
 +      select GENERIC_KERNEL_EXECVE
 +      select GENERIC_KERNEL_THREAD
        select GENERIC_SMP_IDLE_THREAD
        select GENERIC_TIME_VSYSCALL
        select HARDIRQS_SW_RESEND
index 42471d07d972fa6ef3ee3ab52975bc86935835f7,77f696c143396d9bf93521d6444bf12dd4b82c01..ab239b2c456fa7c0e5950f92490166f0c38de9cf
@@@ -43,6 -43,8 +43,8 @@@
  #else
  #define STACK_TOP             STACK_TOP_MAX
  #endif /* CONFIG_COMPAT */
+ #define ARCH_LOW_ADDRESS_LIMIT        PHYS_MASK
  #endif /* __KERNEL__ */
  
  struct debug_info {
@@@ -126,6 -128,11 +128,6 @@@ unsigned long get_wchan(struct task_str
  extern struct task_struct *cpu_switch_to(struct task_struct *prev,
                                         struct task_struct *next);
  
 -/*
 - * Create a new kernel thread
 - */
 -extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
 -
  #define task_pt_regs(p) \
        ((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
  
index b40dc6b69848a0753cecbbd77f38573a86863b1c,68aff2816e8605113945a66e60e1dd2f5b5c2ade..43064a8bd99e4df93f6211fe3774e52c4e55fb5b
@@@ -14,7 -14,6 +14,6 @@@
   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
   */
  #ifdef CONFIG_COMPAT
- #define __ARCH_WANT_COMPAT_IPC_PARSE_VERSION
  #define __ARCH_WANT_COMPAT_STAT64
  #define __ARCH_WANT_SYS_GETHOSTNAME
  #define __ARCH_WANT_SYS_PAUSE
@@@ -26,5 -25,4 +25,5 @@@
  #define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND
  #define __ARCH_WANT_COMPAT_SYS_SENDFILE
  #endif
 +#define __ARCH_WANT_SYS_EXECVE
  #include <uapi/asm/unistd.h>
diff --combined arch/sparc/Kconfig
index e52f3c2ad3dd16cebc41ee0f1b06315d2a6d3c9b,9f2edb5c555179de8d00ee5d2031546df35f8a9d..0c7d365fa402d90dacbc9566ee8eb121b726b75a
@@@ -20,6 -20,7 +20,7 @@@ config SPAR
        select HAVE_ARCH_TRACEHOOK
        select SYSCTL_EXCEPTION_TRACE
        select ARCH_WANT_OPTIONAL_GPIOLIB
+       select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
        select RTC_CLASS
        select RTC_DRV_M48T59
        select HAVE_IRQ_WORK
@@@ -40,8 -41,6 +41,8 @@@
        select GENERIC_STRNCPY_FROM_USER
        select GENERIC_STRNLEN_USER
        select MODULES_USE_ELF_RELA
 +      select GENERIC_KERNEL_THREAD
 +      select GENERIC_KERNEL_EXECVE
  
  config SPARC32
        def_bool !64BIT
index 0305d56d9b1ab7b924c237035936e313f032dfd0,721e25f0e2ea80f19d4a7868791d4653097a2124..cce72ce4c33499c21d20b31cf69f28bfa189d239
@@@ -94,7 -94,6 +94,7 @@@ struct thread_struct 
  #ifndef __ASSEMBLY__
  
  #include <linux/types.h>
 +#include <asm/fpumacro.h>
  
  /* Return saved PC of a blocked thread. */
  struct task_struct;
@@@ -144,10 -143,6 +144,10 @@@ do { 
        : \
        : "r" (regs), "r" (sp - sizeof(struct reg_window) - STACK_BIAS), \
          "i" ((const unsigned long)(&((struct pt_regs *)0)->u_regs[0]))); \
 +      fprs_write(0);  \
 +      current_thread_info()->xfsr[0] = 0;     \
 +      current_thread_info()->fpsaved[0] = 0;  \
 +      regs->tstate &= ~TSTATE_PEF;    \
  } while (0)
  
  #define start_thread32(regs, pc, sp) \
@@@ -188,22 -183,35 +188,37 @@@ do { 
        : \
        : "r" (regs), "r" (sp - sizeof(struct reg_window32)), \
          "i" ((const unsigned long)(&((struct pt_regs *)0)->u_regs[0]))); \
 +      fprs_write(0);  \
 +      current_thread_info()->xfsr[0] = 0;     \
 +      current_thread_info()->fpsaved[0] = 0;  \
 +      regs->tstate &= ~TSTATE_PEF;    \
  } while (0)
  
  /* Free all resources held by a thread. */
  #define release_thread(tsk)           do { } while (0)
  
 -extern pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
 -
  extern unsigned long get_wchan(struct task_struct *task);
  
  #define task_pt_regs(tsk) (task_thread_info(tsk)->kregs)
  #define KSTK_EIP(tsk)  (task_pt_regs(tsk)->tpc)
  #define KSTK_ESP(tsk)  (task_pt_regs(tsk)->u_regs[UREG_FP])
  
- #define cpu_relax()   barrier()
+ /* Please see the commentary in asm/backoff.h for a description of
+  * what these instructions are doing and how they have been choosen.
+  * To make a long story short, we are trying to yield the current cpu
+  * strand during busy loops.
+  */
+ #define cpu_relax()   asm volatile("\n99:\n\t"                        \
+                                    "rd        %%ccr, %%g0\n\t"        \
+                                    "rd        %%ccr, %%g0\n\t"        \
+                                    "rd        %%ccr, %%g0\n\t"        \
+                                    ".section  .pause_3insn_patch,\"ax\"\n\t"\
+                                    ".word     99b\n\t"                \
+                                    "wr        %%g0, 128, %%asr27\n\t" \
+                                    "nop\n\t"                          \
+                                    "nop\n\t"                          \
+                                    ".previous"                        \
+                                    ::: "memory")
  
  /* Prefetch support.  This is tuned for UltraSPARC-III and later.
   * UltraSPARC-I will treat these as nops, and UltraSPARC-II has
index d8b22b3266d07d2910ca8847182623ca634731c1,1c9af9fa38e9b0b489cb38899685e4c4c76b6584..ebb7f5fc58fb5c952582968230656a9cf9b0128b
@@@ -86,7 -86,7 +86,7 @@@ sys_call_table32
        .word compat_sys_pwritev, compat_sys_rt_tgsigqueueinfo, sys_perf_event_open, compat_sys_recvmmsg, sys_fanotify_init
  /*330*/       .word sys32_fanotify_mark, sys_prlimit64, sys_name_to_handle_at, compat_sys_open_by_handle_at, compat_sys_clock_adjtime
        .word sys_syncfs, compat_sys_sendmmsg, sys_setns, compat_sys_process_vm_readv, compat_sys_process_vm_writev
- /*340*/       .word sys_kern_features
+ /*340*/       .word sys_kern_features, sys_kcmp
  
  #endif /* CONFIG_COMPAT */
  
@@@ -107,7 -107,7 +107,7 @@@ sys_call_table
  /*40*/        .word sys_newlstat, sys_dup, sys_sparc_pipe, sys_times, sys_nis_syscall
        .word sys_umount, sys_setgid, sys_getgid, sys_signal, sys_geteuid
  /*50*/        .word sys_getegid, sys_acct, sys_memory_ordering, sys_nis_syscall, sys_ioctl
 -      .word sys_reboot, sys_nis_syscall, sys_symlink, sys_readlink, sys_execve
 +      .word sys_reboot, sys_nis_syscall, sys_symlink, sys_readlink, sys64_execve
  /*60*/        .word sys_umask, sys_chroot, sys_newfstat, sys_fstat64, sys_getpagesize
        .word sys_msync, sys_vfork, sys_pread64, sys_pwrite64, sys_nis_syscall
  /*70*/        .word sys_nis_syscall, sys_mmap, sys_nis_syscall, sys_64_munmap, sys_mprotect
        .word sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init
  /*330*/       .word sys_fanotify_mark, sys_prlimit64, sys_name_to_handle_at, sys_open_by_handle_at, sys_clock_adjtime
        .word sys_syncfs, sys_sendmmsg, sys_setns, sys_process_vm_readv, sys_process_vm_writev
- /*340*/       .word sys_kern_features
+ /*340*/       .word sys_kern_features, sys_kcmp