Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
sparc64: Fix DAX handling via userspace access from kernel.
sparc64: Annotate sparc64 specific syscalls with SYSCALL_DEFINEx()
[CVE-2009-0029] sparc: Enable syscall wrappers for 64-bit
sparc64: Initialize FHC/CLOCK LED platform_device 'id' field correctly.
sparc64: fix modpost failure
sparc64: fix readout of cpu/fpu type

+68 -42
+1
arch/sparc/Kconfig
··· 36 select HAVE_KRETPROBES 37 select HAVE_KPROBES 38 select HAVE_LMB 39 select USE_GENERIC_SMP_HELPERS if SMP 40 select RTC_DRV_CMOS 41 select RTC_DRV_BQ4802
··· 36 select HAVE_KRETPROBES 37 select HAVE_KPROBES 38 select HAVE_LMB 39 + select HAVE_SYSCALL_WRAPPERS 40 select USE_GENERIC_SMP_HELPERS if SMP 41 select RTC_DRV_CMOS 42 select RTC_DRV_BQ4802
+2
arch/sparc/kernel/central.c
··· 103 p->leds_resource.name = "leds"; 104 105 p->leds_pdev.name = "sunfire-clockboard-leds"; 106 p->leds_pdev.resource = &p->leds_resource; 107 p->leds_pdev.num_resources = 1; 108 p->leds_pdev.dev.parent = &op->dev; ··· 198 p->leds_resource.name = "leds"; 199 200 p->leds_pdev.name = "sunfire-fhc-leds"; 201 p->leds_pdev.resource = &p->leds_resource; 202 p->leds_pdev.num_resources = 1; 203 p->leds_pdev.dev.parent = &op->dev;
··· 103 p->leds_resource.name = "leds"; 104 105 p->leds_pdev.name = "sunfire-clockboard-leds"; 106 + p->leds_pdev.id = -1; 107 p->leds_pdev.resource = &p->leds_resource; 108 p->leds_pdev.num_resources = 1; 109 p->leds_pdev.dev.parent = &op->dev; ··· 197 p->leds_resource.name = "leds"; 198 199 p->leds_pdev.name = "sunfire-fhc-leds"; 200 + p->leds_pdev.id = p->board_num; 201 p->leds_pdev.resource = &p->leds_resource; 202 p->leds_pdev.num_resources = 1; 203 p->leds_pdev.dev.parent = &op->dev;
+15 -3
arch/sparc/kernel/cpu.c
··· 239 240 static void set_cpu_and_fpu(int psr_impl, int psr_vers, int fpu_vers) 241 { 242 sparc_cpu_type = NULL; 243 sparc_fpu_type = NULL; 244 - if (psr_impl < ARRAY_SIZE(manufacturer_info)) 245 { 246 const struct cpu_info *cpu; 247 const struct fpu_info *fpu; 248 249 - cpu = &manufacturer_info[psr_impl].cpu_info[0]; 250 while (cpu->psr_vers != -1) 251 { 252 if (cpu->psr_vers == psr_vers) { ··· 268 } 269 cpu++; 270 } 271 - fpu = &manufacturer_info[psr_impl].fpu_info[0]; 272 while (fpu->fp_vers != -1) 273 { 274 if (fpu->fp_vers == fpu_vers) {
··· 239 240 static void set_cpu_and_fpu(int psr_impl, int psr_vers, int fpu_vers) 241 { 242 + const struct manufacturer_info *manuf; 243 + int i; 244 + 245 sparc_cpu_type = NULL; 246 sparc_fpu_type = NULL; 247 + manuf = NULL; 248 + 249 + for (i = 0; i < ARRAY_SIZE(manufacturer_info); i++) 250 + { 251 + if (psr_impl == manufacturer_info[i].psr_impl) { 252 + manuf = &manufacturer_info[i]; 253 + break; 254 + } 255 + } 256 + if (manuf != NULL) 257 { 258 const struct cpu_info *cpu; 259 const struct fpu_info *fpu; 260 261 + cpu = &manuf->cpu_info[0]; 262 while (cpu->psr_vers != -1) 263 { 264 if (cpu->psr_vers == psr_vers) { ··· 256 } 257 cpu++; 258 } 259 + fpu = &manuf->fpu_info[0]; 260 while (fpu->fp_vers != -1) 261 { 262 if (fpu->fp_vers == fpu_vers) {
+23 -25
arch/sparc/kernel/sys_sparc_64.c
··· 399 } 400 } 401 402 - asmlinkage unsigned long sparc_brk(unsigned long brk) 403 { 404 /* People could try to be nasty and use ta 0x6d in 32bit programs */ 405 if (test_thread_flag(TIF_32BIT) && brk >= STACK_TOP32) ··· 415 * sys_pipe() is the normal C calling standard for creating 416 * a pipe. It's not the way unix traditionally does this, though. 417 */ 418 - asmlinkage long sparc_pipe(struct pt_regs *regs) 419 { 420 int fd[2]; 421 int error; ··· 435 * This is really horribly ugly. 436 */ 437 438 - asmlinkage long sys_ipc(unsigned int call, int first, unsigned long second, 439 - unsigned long third, void __user *ptr, long fifth) 440 { 441 long err; 442 ··· 519 return err; 520 } 521 522 - asmlinkage long sparc64_newuname(struct new_utsname __user *name) 523 { 524 int ret = sys_newuname(name); 525 ··· 530 return ret; 531 } 532 533 - asmlinkage long sparc64_personality(unsigned long personality) 534 { 535 int ret; 536 ··· 564 } 565 566 /* Linux version of mmap */ 567 - asmlinkage unsigned long sys_mmap(unsigned long addr, unsigned long len, 568 - unsigned long prot, unsigned long flags, unsigned long fd, 569 - unsigned long off) 570 { 571 struct file * file = NULL; 572 unsigned long retval = -EBADF; ··· 589 return retval; 590 } 591 592 - asmlinkage long sys64_munmap(unsigned long addr, size_t len) 593 { 594 long ret; 595 ··· 606 unsigned long old_len, unsigned long new_len, 607 unsigned long flags, unsigned long new_addr); 608 609 - asmlinkage unsigned long sys64_mremap(unsigned long addr, 610 - unsigned long old_len, unsigned long new_len, 611 - unsigned long flags, unsigned long new_addr) 612 { 613 unsigned long ret = -EINVAL; 614 ··· 671 672 extern void check_pending(int signum); 673 674 - asmlinkage long sys_getdomainname(char __user *name, int len) 675 { 676 int nlen, err; 677 ··· 694 return err; 695 } 696 697 - asmlinkage long sys_utrap_install(utrap_entry_t type, 698 - utrap_handler_t new_p, 699 - utrap_handler_t new_d, 700 - utrap_handler_t __user *old_p, 701 - utrap_handler_t __user *old_d) 702 { 703 if (type < UT_INSTRUCTION_EXCEPTION || type > UT_TRAP_INSTRUCTION_31) 704 return -EINVAL; ··· 763 return 0; 764 } 765 766 - asmlinkage long sys_rt_sigaction(int sig, 767 - const struct sigaction __user *act, 768 - struct sigaction __user *oact, 769 - void __user *restorer, 770 - size_t sigsetsize) 771 { 772 struct k_sigaction new_ka, old_ka; 773 int ret; ··· 805 reset_pic(); 806 } 807 808 - asmlinkage long sys_perfctr(int opcode, unsigned long arg0, unsigned long arg1, unsigned long arg2) 809 { 810 int err = 0; 811
··· 399 } 400 } 401 402 + SYSCALL_DEFINE1(sparc_brk, unsigned long, brk) 403 { 404 /* People could try to be nasty and use ta 0x6d in 32bit programs */ 405 if (test_thread_flag(TIF_32BIT) && brk >= STACK_TOP32) ··· 415 * sys_pipe() is the normal C calling standard for creating 416 * a pipe. It's not the way unix traditionally does this, though. 417 */ 418 + SYSCALL_DEFINE1(sparc_pipe_real, struct pt_regs *, regs) 419 { 420 int fd[2]; 421 int error; ··· 435 * This is really horribly ugly. 436 */ 437 438 + SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second, 439 + unsigned long, third, void __user *, ptr, long, fifth) 440 { 441 long err; 442 ··· 519 return err; 520 } 521 522 + SYSCALL_DEFINE1(sparc64_newuname, struct new_utsname __user *, name) 523 { 524 int ret = sys_newuname(name); 525 ··· 530 return ret; 531 } 532 533 + SYSCALL_DEFINE1(sparc64_personality, unsigned long, personality) 534 { 535 int ret; 536 ··· 564 } 565 566 /* Linux version of mmap */ 567 + SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len, 568 + unsigned long, prot, unsigned long, flags, unsigned long, fd, 569 + unsigned long, off) 570 { 571 struct file * file = NULL; 572 unsigned long retval = -EBADF; ··· 589 return retval; 590 } 591 592 + SYSCALL_DEFINE2(64_munmap, unsigned long, addr, size_t, len) 593 { 594 long ret; 595 ··· 606 unsigned long old_len, unsigned long new_len, 607 unsigned long flags, unsigned long new_addr); 608 609 + SYSCALL_DEFINE5(64_mremap, unsigned long, addr, unsigned long, old_len, 610 + unsigned long, new_len, unsigned long, flags, 611 + unsigned long, new_addr) 612 { 613 unsigned long ret = -EINVAL; 614 ··· 671 672 extern void check_pending(int signum); 673 674 + SYSCALL_DEFINE2(getdomainname, char __user *, name, int, len) 675 { 676 int nlen, err; 677 ··· 694 return err; 695 } 696 697 + SYSCALL_DEFINE5(utrap_install, utrap_entry_t, type, 698 + utrap_handler_t, new_p, utrap_handler_t, new_d, 699 + utrap_handler_t __user *, old_p, 700 + utrap_handler_t __user *, old_d) 701 { 702 if (type < UT_INSTRUCTION_EXCEPTION || type > UT_TRAP_INSTRUCTION_31) 703 return -EINVAL; ··· 764 return 0; 765 } 766 767 + SYSCALL_DEFINE5(rt_sigaction, int, sig, const struct sigaction __user *, act, 768 + struct sigaction __user *, oact, void __user *, restorer, 769 + size_t, sigsetsize) 770 { 771 struct k_sigaction new_ka, old_ka; 772 int ret; ··· 808 reset_pic(); 809 } 810 811 + SYSCALL_DEFINE4(perfctr, int, opcode, unsigned long, arg0, 812 + unsigned long, arg1, unsigned long, arg2) 813 { 814 int err = 0; 815
+1 -1
arch/sparc/kernel/syscalls.S
··· 21 22 .align 32 23 sys_sparc_pipe: 24 - ba,pt %xcc, sparc_pipe 25 add %sp, PTREGS_OFF, %o0 26 sys_nis_syscall: 27 ba,pt %xcc, c_sys_nis_syscall
··· 21 22 .align 32 23 sys_sparc_pipe: 24 + ba,pt %xcc, sys_sparc_pipe_real 25 add %sp, PTREGS_OFF, %o0 26 sys_nis_syscall: 27 ba,pt %xcc, c_sys_nis_syscall
-3
arch/sparc/kernel/systbls.h
··· 16 void __user *ptr, long fifth); 17 extern asmlinkage long sparc64_newuname(struct new_utsname __user *name); 18 extern asmlinkage long sparc64_personality(unsigned long personality); 19 - extern asmlinkage unsigned long sys_mmap(unsigned long addr, unsigned long len, 20 - unsigned long prot, unsigned long flags, 21 - unsigned long fd, unsigned long off); 22 extern asmlinkage long sys64_munmap(unsigned long addr, size_t len); 23 extern asmlinkage unsigned long sys64_mremap(unsigned long addr, 24 unsigned long old_len,
··· 16 void __user *ptr, long fifth); 17 extern asmlinkage long sparc64_newuname(struct new_utsname __user *name); 18 extern asmlinkage long sparc64_personality(unsigned long personality); 19 extern asmlinkage long sys64_munmap(unsigned long addr, size_t len); 20 extern asmlinkage unsigned long sys64_mremap(unsigned long addr, 21 unsigned long old_len,
+8 -8
arch/sparc/kernel/systbls_64.S
··· 21 /*0*/ .word sys_restart_syscall, sys32_exit, sys_fork, sys_read, sys_write 22 /*5*/ .word sys32_open, sys_close, sys32_wait4, sys32_creat, sys_link 23 /*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys32_mknod 24 - /*15*/ .word sys_chmod, sys_lchown16, sparc_brk, sys32_perfctr, sys32_lseek 25 /*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16 26 /*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, sys32_sigaltstack, sys_pause 27 /*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice ··· 55 /*170*/ .word sys32_lsetxattr, sys32_fsetxattr, sys_getxattr, sys_lgetxattr, compat_sys_getdents 56 .word sys_setsid, sys_fchdir, sys32_fgetxattr, sys_listxattr, sys_llistxattr 57 /*180*/ .word sys32_flistxattr, sys_removexattr, sys_lremovexattr, compat_sys_sigpending, sys_ni_syscall 58 - .word sys32_setpgid, sys32_fremovexattr, sys32_tkill, sys32_exit_group, sparc64_newuname 59 - /*190*/ .word sys32_init_module, sparc64_personality, sys_remap_file_pages, sys32_epoll_create, sys32_epoll_ctl 60 .word sys32_epoll_wait, sys32_ioprio_set, sys_getppid, sys32_sigaction, sys_sgetmask 61 /*200*/ .word sys32_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir 62 .word sys32_readahead, sys32_socketcall, sys32_syslog, sys32_lookup_dcookie, sys32_fadvise64 ··· 95 /*0*/ .word sys_restart_syscall, sparc_exit, sys_fork, sys_read, sys_write 96 /*5*/ .word sys_open, sys_close, sys_wait4, sys_creat, sys_link 97 /*10*/ .word sys_unlink, sys_nis_syscall, sys_chdir, sys_chown, sys_mknod 98 - /*15*/ .word sys_chmod, sys_lchown, sparc_brk, sys_perfctr, sys_lseek 99 /*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid, sys_getuid 100 /*25*/ .word sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_nis_syscall 101 /*30*/ .word sys_utime, sys_nis_syscall, sys_nis_syscall, sys_access, sys_nice ··· 106 .word sys_reboot, sys_nis_syscall, sys_symlink, sys_readlink, sys_execve 107 /*60*/ .word sys_umask, sys_chroot, sys_newfstat, sys_fstat64, sys_getpagesize 108 .word sys_msync, sys_vfork, sys_pread64, sys_pwrite64, sys_nis_syscall 109 - /*70*/ .word sys_nis_syscall, sys_mmap, sys_nis_syscall, sys64_munmap, sys_mprotect 110 .word sys_madvise, sys_vhangup, sys_nis_syscall, sys_mincore, sys_getgroups 111 /*80*/ .word sys_setgroups, sys_getpgrp, sys_nis_syscall, sys_setitimer, sys_nis_syscall 112 .word sys_swapon, sys_getitimer, sys_nis_syscall, sys_sethostname, sys_nis_syscall ··· 129 /*170*/ .word sys_lsetxattr, sys_fsetxattr, sys_getxattr, sys_lgetxattr, sys_getdents 130 .word sys_setsid, sys_fchdir, sys_fgetxattr, sys_listxattr, sys_llistxattr 131 /*180*/ .word sys_flistxattr, sys_removexattr, sys_lremovexattr, sys_nis_syscall, sys_ni_syscall 132 - .word sys_setpgid, sys_fremovexattr, sys_tkill, sys_exit_group, sparc64_newuname 133 - /*190*/ .word sys_init_module, sparc64_personality, sys_remap_file_pages, sys_epoll_create, sys_epoll_ctl 134 .word sys_epoll_wait, sys_ioprio_set, sys_getppid, sys_nis_syscall, sys_sgetmask 135 /*200*/ .word sys_ssetmask, sys_nis_syscall, sys_newlstat, sys_uselib, sys_nis_syscall 136 .word sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64 ··· 142 .word sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall 143 /*240*/ .word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler 144 .word sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep 145 - /*250*/ .word sys64_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl 146 .word sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep 147 /*260*/ .word sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun 148 .word sys_timer_delete, sys_timer_create, sys_ni_syscall, sys_io_setup, sys_io_destroy
··· 21 /*0*/ .word sys_restart_syscall, sys32_exit, sys_fork, sys_read, sys_write 22 /*5*/ .word sys32_open, sys_close, sys32_wait4, sys32_creat, sys_link 23 /*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys32_mknod 24 + /*15*/ .word sys_chmod, sys_lchown16, sys_sparc_brk, sys32_perfctr, sys32_lseek 25 /*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16 26 /*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, sys32_sigaltstack, sys_pause 27 /*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice ··· 55 /*170*/ .word sys32_lsetxattr, sys32_fsetxattr, sys_getxattr, sys_lgetxattr, compat_sys_getdents 56 .word sys_setsid, sys_fchdir, sys32_fgetxattr, sys_listxattr, sys_llistxattr 57 /*180*/ .word sys32_flistxattr, sys_removexattr, sys_lremovexattr, compat_sys_sigpending, sys_ni_syscall 58 + .word sys32_setpgid, sys32_fremovexattr, sys32_tkill, sys32_exit_group, sys_sparc64_newuname 59 + /*190*/ .word sys32_init_module, sys_sparc64_personality, sys_remap_file_pages, sys32_epoll_create, sys32_epoll_ctl 60 .word sys32_epoll_wait, sys32_ioprio_set, sys_getppid, sys32_sigaction, sys_sgetmask 61 /*200*/ .word sys32_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir 62 .word sys32_readahead, sys32_socketcall, sys32_syslog, sys32_lookup_dcookie, sys32_fadvise64 ··· 95 /*0*/ .word sys_restart_syscall, sparc_exit, sys_fork, sys_read, sys_write 96 /*5*/ .word sys_open, sys_close, sys_wait4, sys_creat, sys_link 97 /*10*/ .word sys_unlink, sys_nis_syscall, sys_chdir, sys_chown, sys_mknod 98 + /*15*/ .word sys_chmod, sys_lchown, sys_sparc_brk, sys_perfctr, sys_lseek 99 /*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid, sys_getuid 100 /*25*/ .word sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_nis_syscall 101 /*30*/ .word sys_utime, sys_nis_syscall, sys_nis_syscall, sys_access, sys_nice ··· 106 .word sys_reboot, sys_nis_syscall, sys_symlink, sys_readlink, sys_execve 107 /*60*/ .word sys_umask, sys_chroot, sys_newfstat, sys_fstat64, sys_getpagesize 108 .word sys_msync, sys_vfork, sys_pread64, sys_pwrite64, sys_nis_syscall 109 + /*70*/ .word sys_nis_syscall, sys_mmap, sys_nis_syscall, sys_64_munmap, sys_mprotect 110 .word sys_madvise, sys_vhangup, sys_nis_syscall, sys_mincore, sys_getgroups 111 /*80*/ .word sys_setgroups, sys_getpgrp, sys_nis_syscall, sys_setitimer, sys_nis_syscall 112 .word sys_swapon, sys_getitimer, sys_nis_syscall, sys_sethostname, sys_nis_syscall ··· 129 /*170*/ .word sys_lsetxattr, sys_fsetxattr, sys_getxattr, sys_lgetxattr, sys_getdents 130 .word sys_setsid, sys_fchdir, sys_fgetxattr, sys_listxattr, sys_llistxattr 131 /*180*/ .word sys_flistxattr, sys_removexattr, sys_lremovexattr, sys_nis_syscall, sys_ni_syscall 132 + .word sys_setpgid, sys_fremovexattr, sys_tkill, sys_exit_group, sys_sparc64_newuname 133 + /*190*/ .word sys_init_module, sys_sparc64_personality, sys_remap_file_pages, sys_epoll_create, sys_epoll_ctl 134 .word sys_epoll_wait, sys_ioprio_set, sys_getppid, sys_nis_syscall, sys_sgetmask 135 /*200*/ .word sys_ssetmask, sys_nis_syscall, sys_newlstat, sys_uselib, sys_nis_syscall 136 .word sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64 ··· 142 .word sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall 143 /*240*/ .word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler 144 .word sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep 145 + /*250*/ .word sys_64_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl 146 .word sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep 147 /*260*/ .word sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun 148 .word sys_timer_delete, sys_timer_create, sys_ni_syscall, sys_io_setup, sys_io_destroy
+16 -1
arch/sparc/kernel/traps_64.c
··· 1 /* arch/sparc64/kernel/traps.c 2 * 3 - * Copyright (C) 1995,1997,2008 David S. Miller (davem@davemloft.net) 4 * Copyright (C) 1997,1999,2000 Jakub Jelinek (jakub@redhat.com) 5 */ 6 ··· 314 return; 315 316 if (regs->tstate & TSTATE_PRIV) { 317 printk("sun4v_data_access_exception: ADDR[%016lx] " 318 "CTX[%04x] TYPE[%04x], going.\n", 319 addr, ctx, type);
··· 1 /* arch/sparc64/kernel/traps.c 2 * 3 + * Copyright (C) 1995,1997,2008,2009 David S. Miller (davem@davemloft.net) 4 * Copyright (C) 1997,1999,2000 Jakub Jelinek (jakub@redhat.com) 5 */ 6 ··· 314 return; 315 316 if (regs->tstate & TSTATE_PRIV) { 317 + /* Test if this comes from uaccess places. */ 318 + const struct exception_table_entry *entry; 319 + 320 + entry = search_exception_tables(regs->tpc); 321 + if (entry) { 322 + /* Ouch, somebody is trying VM hole tricks on us... */ 323 + #ifdef DEBUG_EXCEPTIONS 324 + printk("Exception: PC<%016lx> faddr<UNKNOWN>\n", regs->tpc); 325 + printk("EX_TABLE: insn<%016lx> fixup<%016lx>\n", 326 + regs->tpc, entry->fixup); 327 + #endif 328 + regs->tpc = entry->fixup; 329 + regs->tnpc = regs->tpc + 4; 330 + return; 331 + } 332 printk("sun4v_data_access_exception: ADDR[%016lx] " 333 "CTX[%04x] TYPE[%04x], going.\n", 334 addr, ctx, type);
+2 -1
arch/sparc/lib/Makefile
··· 18 lib-y += rwsem_$(BITS).o 19 lib-$(CONFIG_SPARC32) += muldi3.o bitext.o cmpdi2.o 20 21 - lib-$(CONFIG_SPARC64) += PeeCeeI.o copy_page.o clear_page.o bzero.o 22 lib-$(CONFIG_SPARC64) += csum_copy.o csum_copy_from_user.o csum_copy_to_user.o 23 lib-$(CONFIG_SPARC64) += VISsave.o 24 lib-$(CONFIG_SPARC64) += bitops.o ··· 43 obj-y += iomap.o 44 obj-$(CONFIG_SPARC32) += atomic32.o 45 obj-y += ksyms.o
··· 18 lib-y += rwsem_$(BITS).o 19 lib-$(CONFIG_SPARC32) += muldi3.o bitext.o cmpdi2.o 20 21 + lib-$(CONFIG_SPARC64) += copy_page.o clear_page.o bzero.o 22 lib-$(CONFIG_SPARC64) += csum_copy.o csum_copy_from_user.o csum_copy_to_user.o 23 lib-$(CONFIG_SPARC64) += VISsave.o 24 lib-$(CONFIG_SPARC64) += bitops.o ··· 43 obj-y += iomap.o 44 obj-$(CONFIG_SPARC32) += atomic32.o 45 obj-y += ksyms.o 46 + obj-$(CONFIG_SPARC64) += PeeCeeI.o