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

Pull sparc updates from David Miller:

 - Automatic system call table generation, from Firoz Khan.

 - Clean up accesses to the OF device names by using full_name instead
   of path_component_name.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next:
  ALSA: sparc: Use of_node_name_eq for node name comparisons
  sbus: Use of_node_name_eq for node name comparisons
  sparc: generate uapi header and system call table files
  sparc: add system call table generation support
  sparc: add __NR_syscalls along with NR_syscalls
  sparc: move __IGNORE* entries to non uapi header
  sparc: Use DT node full_name instead of name for resources
  sparc: Remove unused leon_trans_init
  sparc: Use device_type helpers to access the node type
  sparc: Use of_node_name_eq for node name comparisons
  sparc: Convert to using %pOFn instead of device_node.name
  sparc: prom: use property "name" directly to construct node names
  of: Drop full path from full_name for PDT systems
  sparc: Convert to using %pOF instead of full_name
  fs/openpromfs: Use of_node_name_eq for node name comparisons
  fs/openpromfs: use full_name instead of path_component_name
This commit is contained in:
Linus Torvalds 2018-12-26 10:32:18 -08:00
commit c2f1f3e0e1
42 changed files with 777 additions and 904 deletions

View File

@ -81,6 +81,9 @@ install:
archclean: archclean:
$(Q)$(MAKE) $(clean)=$(boot) $(Q)$(MAKE) $(clean)=$(boot)
archheaders:
$(Q)$(MAKE) $(build)=arch/sparc/kernel/syscalls all
PHONY += vdso_install PHONY += vdso_install
vdso_install: vdso_install:
$(Q)$(MAKE) $(build)=arch/sparc/vdso $@ $(Q)$(MAKE) $(build)=arch/sparc/vdso $@

View File

@ -1,6 +1,8 @@
# User exported sparc header files # User exported sparc header files
generated-y += syscall_table_32.h
generated-y += syscall_table_64.h
generated-y += syscall_table_c32.h
generic-y += div64.h generic-y += div64.h
generic-y += emergency-restart.h generic-y += emergency-restart.h
generic-y += exec.h generic-y += exec.h

View File

@ -528,9 +528,9 @@ static int sun_pci_fd_test_drive(unsigned long port, int drive)
static int __init ebus_fdthree_p(struct device_node *dp) static int __init ebus_fdthree_p(struct device_node *dp)
{ {
if (!strcmp(dp->name, "fdthree")) if (of_node_name_eq(dp, "fdthree"))
return 1; return 1;
if (!strcmp(dp->name, "floppy")) { if (of_node_name_eq(dp, "floppy")) {
const char *compat; const char *compat;
compat = of_get_property(dp, "compatible", NULL); compat = of_get_property(dp, "compatible", NULL);
@ -555,7 +555,7 @@ static unsigned long __init sun_floppy_init(void)
op = NULL; op = NULL;
for_each_node_by_name(dp, "SUNW,fdtwo") { for_each_node_by_name(dp, "SUNW,fdtwo") {
if (strcmp(dp->parent->name, "sbus")) if (!of_node_name_eq(dp->parent, "sbus"))
continue; continue;
op = of_find_device_by_node(dp); op = of_find_device_by_node(dp);
if (op) if (op)
@ -656,7 +656,7 @@ static unsigned long __init sun_floppy_init(void)
*/ */
config = 0; config = 0;
for (dp = ebus_dp->child; dp; dp = dp->sibling) { for (dp = ebus_dp->child; dp; dp = dp->sibling) {
if (!strcmp(dp->name, "ecpp")) { if (of_node_name_eq(dp, "ecpp")) {
struct platform_device *ecpp_op; struct platform_device *ecpp_op;
ecpp_op = of_find_device_by_node(dp); ecpp_op = of_find_device_by_node(dp);

View File

@ -225,7 +225,6 @@ void leon_update_virq_handling(unsigned int virq,
irq_flow_handler_t flow_handler, irq_flow_handler_t flow_handler,
const char *name, int do_ack); const char *name, int do_ack);
void leon_init_timers(void); void leon_init_timers(void);
void leon_trans_init(struct device_node *dp);
void leon_node_init(struct device_node *dp, struct device_node ***nextp); void leon_node_init(struct device_node *dp, struct device_node ***nextp);
void init_leon(void); void init_leon(void);
void poke_leonsparc(void); void poke_leonsparc(void);

View File

@ -117,7 +117,7 @@ static int ecpp_probe(struct platform_device *op)
int slot, err; int slot, err;
parent = op->dev.of_node->parent; parent = op->dev.of_node->parent;
if (!strcmp(parent->name, "dma")) { if (of_node_name_eq(parent, "dma")) {
p = parport_pc_probe_port(base, base + 0x400, p = parport_pc_probe_port(base, base + 0x400,
op->archdata.irqs[0], PARPORT_DMA_NOFIFO, op->archdata.irqs[0], PARPORT_DMA_NOFIFO,
op->dev.parent->parent, 0); op->dev.parent->parent, 0);

View File

@ -17,6 +17,8 @@
#include <uapi/asm/unistd.h> #include <uapi/asm/unistd.h>
#define NR_syscalls __NR_syscalls
#ifdef __32bit_syscall_numbers__ #ifdef __32bit_syscall_numbers__
#else #else
#define __NR_time 231 /* Linux sparc32 */ #define __NR_time 231 /* Linux sparc32 */
@ -46,4 +48,20 @@
#define __ARCH_WANT_COMPAT_SYS_SENDFILE #define __ARCH_WANT_COMPAT_SYS_SENDFILE
#endif #endif
#ifdef __32bit_syscall_numbers__
/* Sparc 32-bit only has the "setresuid32", "getresuid32" variants,
* it never had the plain ones and there is no value to adding those
* old versions into the syscall table.
*/
#define __IGNORE_setresuid
#define __IGNORE_getresuid
#define __IGNORE_setresgid
#define __IGNORE_getresgid
#endif
/* Sparc doesn't have protection keys. */
#define __IGNORE_pkey_mprotect
#define __IGNORE_pkey_alloc
#define __IGNORE_pkey_free
#endif /* _SPARC_UNISTD_H */ #endif /* _SPARC_UNISTD_H */

View File

@ -1,5 +1,7 @@
# UAPI Header export list # UAPI Header export list
include include/uapi/asm-generic/Kbuild.asm include include/uapi/asm-generic/Kbuild.asm
generated-y += unistd_32.h
generated-y += unistd_64.h
generic-y += bpf_perf_event.h generic-y += bpf_perf_event.h
generic-y += types.h generic-y += types.h

View File

@ -21,433 +21,13 @@
#endif #endif
#endif #endif
#define __NR_restart_syscall 0 /* Linux Specific */ #ifdef __arch64__
#define __NR_exit 1 /* Common */ #include <asm/unistd_64.h>
#define __NR_fork 2 /* Common */
#define __NR_read 3 /* Common */
#define __NR_write 4 /* Common */
#define __NR_open 5 /* Common */
#define __NR_close 6 /* Common */
#define __NR_wait4 7 /* Common */
#define __NR_creat 8 /* Common */
#define __NR_link 9 /* Common */
#define __NR_unlink 10 /* Common */
#define __NR_execv 11 /* SunOS Specific */
#define __NR_chdir 12 /* Common */
#define __NR_chown 13 /* Common */
#define __NR_mknod 14 /* Common */
#define __NR_chmod 15 /* Common */
#define __NR_lchown 16 /* Common */
#define __NR_brk 17 /* Common */
#define __NR_perfctr 18 /* Performance counter operations */
#define __NR_lseek 19 /* Common */
#define __NR_getpid 20 /* Common */
#define __NR_capget 21 /* Linux Specific */
#define __NR_capset 22 /* Linux Specific */
#define __NR_setuid 23 /* Implemented via setreuid in SunOS */
#define __NR_getuid 24 /* Common */
#define __NR_vmsplice 25 /* ENOSYS under SunOS */
#define __NR_ptrace 26 /* Common */
#define __NR_alarm 27 /* Implemented via setitimer in SunOS */
#define __NR_sigaltstack 28 /* Common */
#define __NR_pause 29 /* Is sigblock(0)->sigpause() in SunOS */
#define __NR_utime 30 /* Implemented via utimes() under SunOS */
#ifdef __32bit_syscall_numbers__
#define __NR_lchown32 31 /* Linux sparc32 specific */
#define __NR_fchown32 32 /* Linux sparc32 specific */
#endif
#define __NR_access 33 /* Common */
#define __NR_nice 34 /* Implemented via get/setpriority() in SunOS */
#ifdef __32bit_syscall_numbers__
#define __NR_chown32 35 /* Linux sparc32 specific */
#endif
#define __NR_sync 36 /* Common */
#define __NR_kill 37 /* Common */
#define __NR_stat 38 /* Common */
#define __NR_sendfile 39 /* Linux Specific */
#define __NR_lstat 40 /* Common */
#define __NR_dup 41 /* Common */
#define __NR_pipe 42 /* Common */
#define __NR_times 43 /* Implemented via getrusage() in SunOS */
#ifdef __32bit_syscall_numbers__
#define __NR_getuid32 44 /* Linux sparc32 specific */
#endif
#define __NR_umount2 45 /* Linux Specific */
#define __NR_setgid 46 /* Implemented via setregid() in SunOS */
#define __NR_getgid 47 /* Common */
#define __NR_signal 48 /* Implemented via sigvec() in SunOS */
#define __NR_geteuid 49 /* SunOS calls getuid() */
#define __NR_getegid 50 /* SunOS calls getgid() */
#define __NR_acct 51 /* Common */
#ifdef __32bit_syscall_numbers__
#define __NR_getgid32 53 /* Linux sparc32 specific */
#else #else
#define __NR_memory_ordering 52 /* Linux Specific */ #include <asm/unistd_32.h>
#endif #endif
#define __NR_ioctl 54 /* Common */
#define __NR_reboot 55 /* Common */
#ifdef __32bit_syscall_numbers__
#define __NR_mmap2 56 /* Linux sparc32 Specific */
#endif
#define __NR_symlink 57 /* Common */
#define __NR_readlink 58 /* Common */
#define __NR_execve 59 /* Common */
#define __NR_umask 60 /* Common */
#define __NR_chroot 61 /* Common */
#define __NR_fstat 62 /* Common */
#define __NR_fstat64 63 /* Linux Specific */
#define __NR_getpagesize 64 /* Common */
#define __NR_msync 65 /* Common in newer 1.3.x revs... */
#define __NR_vfork 66 /* Common */
#define __NR_pread64 67 /* Linux Specific */
#define __NR_pwrite64 68 /* Linux Specific */
#ifdef __32bit_syscall_numbers__
#define __NR_geteuid32 69 /* Linux sparc32, sbrk under SunOS */
#define __NR_getegid32 70 /* Linux sparc32, sstk under SunOS */
#endif
#define __NR_mmap 71 /* Common */
#ifdef __32bit_syscall_numbers__
#define __NR_setreuid32 72 /* Linux sparc32, vadvise under SunOS */
#endif
#define __NR_munmap 73 /* Common */
#define __NR_mprotect 74 /* Common */
#define __NR_madvise 75 /* Common */
#define __NR_vhangup 76 /* Common */
#ifdef __32bit_syscall_numbers__
#define __NR_truncate64 77 /* Linux sparc32 Specific */
#endif
#define __NR_mincore 78 /* Common */
#define __NR_getgroups 79 /* Common */
#define __NR_setgroups 80 /* Common */
#define __NR_getpgrp 81 /* Common */
#ifdef __32bit_syscall_numbers__
#define __NR_setgroups32 82 /* Linux sparc32, setpgrp under SunOS */
#endif
#define __NR_setitimer 83 /* Common */
#ifdef __32bit_syscall_numbers__
#define __NR_ftruncate64 84 /* Linux sparc32 Specific */
#endif
#define __NR_swapon 85 /* Common */
#define __NR_getitimer 86 /* Common */
#ifdef __32bit_syscall_numbers__
#define __NR_setuid32 87 /* Linux sparc32, gethostname under SunOS */
#endif
#define __NR_sethostname 88 /* Common */
#ifdef __32bit_syscall_numbers__
#define __NR_setgid32 89 /* Linux sparc32, getdtablesize under SunOS */
#endif
#define __NR_dup2 90 /* Common */
#ifdef __32bit_syscall_numbers__
#define __NR_setfsuid32 91 /* Linux sparc32, getdopt under SunOS */
#endif
#define __NR_fcntl 92 /* Common */
#define __NR_select 93 /* Common */
#ifdef __32bit_syscall_numbers__
#define __NR_setfsgid32 94 /* Linux sparc32, setdopt under SunOS */
#endif
#define __NR_fsync 95 /* Common */
#define __NR_setpriority 96 /* Common */
#define __NR_socket 97 /* Common */
#define __NR_connect 98 /* Common */
#define __NR_accept 99 /* Common */
#define __NR_getpriority 100 /* Common */
#define __NR_rt_sigreturn 101 /* Linux Specific */
#define __NR_rt_sigaction 102 /* Linux Specific */
#define __NR_rt_sigprocmask 103 /* Linux Specific */
#define __NR_rt_sigpending 104 /* Linux Specific */
#define __NR_rt_sigtimedwait 105 /* Linux Specific */
#define __NR_rt_sigqueueinfo 106 /* Linux Specific */
#define __NR_rt_sigsuspend 107 /* Linux Specific */
#ifdef __32bit_syscall_numbers__
#define __NR_setresuid32 108 /* Linux Specific, sigvec under SunOS */
#define __NR_getresuid32 109 /* Linux Specific, sigblock under SunOS */
#define __NR_setresgid32 110 /* Linux Specific, sigsetmask under SunOS */
#define __NR_getresgid32 111 /* Linux Specific, sigpause under SunOS */
#define __NR_setregid32 112 /* Linux sparc32, sigstack under SunOS */
#else
#define __NR_setresuid 108 /* Linux Specific, sigvec under SunOS */
#define __NR_getresuid 109 /* Linux Specific, sigblock under SunOS */
#define __NR_setresgid 110 /* Linux Specific, sigsetmask under SunOS */
#define __NR_getresgid 111 /* Linux Specific, sigpause under SunOS */
#endif
#define __NR_recvmsg 113 /* Common */
#define __NR_sendmsg 114 /* Common */
#ifdef __32bit_syscall_numbers__
#define __NR_getgroups32 115 /* Linux sparc32, vtrace under SunOS */
#endif
#define __NR_gettimeofday 116 /* Common */
#define __NR_getrusage 117 /* Common */
#define __NR_getsockopt 118 /* Common */
#define __NR_getcwd 119 /* Linux Specific */
#define __NR_readv 120 /* Common */
#define __NR_writev 121 /* Common */
#define __NR_settimeofday 122 /* Common */
#define __NR_fchown 123 /* Common */
#define __NR_fchmod 124 /* Common */
#define __NR_recvfrom 125 /* Common */
#define __NR_setreuid 126 /* Common */
#define __NR_setregid 127 /* Common */
#define __NR_rename 128 /* Common */
#define __NR_truncate 129 /* Common */
#define __NR_ftruncate 130 /* Common */
#define __NR_flock 131 /* Common */
#define __NR_lstat64 132 /* Linux Specific */
#define __NR_sendto 133 /* Common */
#define __NR_shutdown 134 /* Common */
#define __NR_socketpair 135 /* Common */
#define __NR_mkdir 136 /* Common */
#define __NR_rmdir 137 /* Common */
#define __NR_utimes 138 /* SunOS Specific */
#define __NR_stat64 139 /* Linux Specific */
#define __NR_sendfile64 140 /* adjtime under SunOS */
#define __NR_getpeername 141 /* Common */
#define __NR_futex 142 /* gethostid under SunOS */
#define __NR_gettid 143 /* ENOSYS under SunOS */
#define __NR_getrlimit 144 /* Common */
#define __NR_setrlimit 145 /* Common */
#define __NR_pivot_root 146 /* Linux Specific, killpg under SunOS */
#define __NR_prctl 147 /* ENOSYS under SunOS */
#define __NR_pciconfig_read 148 /* ENOSYS under SunOS */
#define __NR_pciconfig_write 149 /* ENOSYS under SunOS */
#define __NR_getsockname 150 /* Common */
#define __NR_inotify_init 151 /* Linux specific */
#define __NR_inotify_add_watch 152 /* Linux specific */
#define __NR_poll 153 /* Common */
#define __NR_getdents64 154 /* Linux specific */
#ifdef __32bit_syscall_numbers__
#define __NR_fcntl64 155 /* Linux sparc32 Specific */
#endif
#define __NR_inotify_rm_watch 156 /* Linux specific */
#define __NR_statfs 157 /* Common */
#define __NR_fstatfs 158 /* Common */
#define __NR_umount 159 /* Common */
#define __NR_sched_set_affinity 160 /* Linux specific, async_daemon under SunOS */
#define __NR_sched_get_affinity 161 /* Linux specific, getfh under SunOS */
#define __NR_getdomainname 162 /* SunOS Specific */
#define __NR_setdomainname 163 /* Common */
#ifndef __32bit_syscall_numbers__
#define __NR_utrap_install 164 /* SYSV ABI/v9 required */
#endif
#define __NR_quotactl 165 /* Common */
#define __NR_set_tid_address 166 /* Linux specific, exportfs under SunOS */
#define __NR_mount 167 /* Common */
#define __NR_ustat 168 /* Common */
#define __NR_setxattr 169 /* SunOS: semsys */
#define __NR_lsetxattr 170 /* SunOS: msgsys */
#define __NR_fsetxattr 171 /* SunOS: shmsys */
#define __NR_getxattr 172 /* SunOS: auditsys */
#define __NR_lgetxattr 173 /* SunOS: rfssys */
#define __NR_getdents 174 /* Common */
#define __NR_setsid 175 /* Common */
#define __NR_fchdir 176 /* Common */
#define __NR_fgetxattr 177 /* SunOS: fchroot */
#define __NR_listxattr 178 /* SunOS: vpixsys */
#define __NR_llistxattr 179 /* SunOS: aioread */
#define __NR_flistxattr 180 /* SunOS: aiowrite */
#define __NR_removexattr 181 /* SunOS: aiowait */
#define __NR_lremovexattr 182 /* SunOS: aiocancel */
#define __NR_sigpending 183 /* Common */
#define __NR_query_module 184 /* Linux Specific */
#define __NR_setpgid 185 /* Common */
#define __NR_fremovexattr 186 /* SunOS: pathconf */
#define __NR_tkill 187 /* SunOS: fpathconf */
#define __NR_exit_group 188 /* Linux specific, sysconf undef SunOS */
#define __NR_uname 189 /* Linux Specific */
#define __NR_init_module 190 /* Linux Specific */
#define __NR_personality 191 /* Linux Specific */
#define __NR_remap_file_pages 192 /* Linux Specific */
#define __NR_epoll_create 193 /* Linux Specific */
#define __NR_epoll_ctl 194 /* Linux Specific */
#define __NR_epoll_wait 195 /* Linux Specific */
#define __NR_ioprio_set 196 /* Linux Specific */
#define __NR_getppid 197 /* Linux Specific */
#define __NR_sigaction 198 /* Linux Specific */
#define __NR_sgetmask 199 /* Linux Specific */
#define __NR_ssetmask 200 /* Linux Specific */
#define __NR_sigsuspend 201 /* Linux Specific */
#define __NR_oldlstat 202 /* Linux Specific */
#define __NR_uselib 203 /* Linux Specific */
#define __NR_readdir 204 /* Linux Specific */
#define __NR_readahead 205 /* Linux Specific */
#define __NR_socketcall 206 /* Linux Specific */
#define __NR_syslog 207 /* Linux Specific */
#define __NR_lookup_dcookie 208 /* Linux Specific */
#define __NR_fadvise64 209 /* Linux Specific */
#define __NR_fadvise64_64 210 /* Linux Specific */
#define __NR_tgkill 211 /* Linux Specific */
#define __NR_waitpid 212 /* Linux Specific */
#define __NR_swapoff 213 /* Linux Specific */
#define __NR_sysinfo 214 /* Linux Specific */
#define __NR_ipc 215 /* Linux Specific */
#define __NR_sigreturn 216 /* Linux Specific */
#define __NR_clone 217 /* Linux Specific */
#define __NR_ioprio_get 218 /* Linux Specific */
#define __NR_adjtimex 219 /* Linux Specific */
#define __NR_sigprocmask 220 /* Linux Specific */
#define __NR_create_module 221 /* Linux Specific */
#define __NR_delete_module 222 /* Linux Specific */
#define __NR_get_kernel_syms 223 /* Linux Specific */
#define __NR_getpgid 224 /* Linux Specific */
#define __NR_bdflush 225 /* Linux Specific */
#define __NR_sysfs 226 /* Linux Specific */
#define __NR_afs_syscall 227 /* Linux Specific */
#define __NR_setfsuid 228 /* Linux Specific */
#define __NR_setfsgid 229 /* Linux Specific */
#define __NR__newselect 230 /* Linux Specific */
#ifdef __32bit_syscall_numbers__
#define __NR_time 231 /* Linux Specific */
#else
#endif
#define __NR_splice 232 /* Linux Specific */
#define __NR_stime 233 /* Linux Specific */
#define __NR_statfs64 234 /* Linux Specific */
#define __NR_fstatfs64 235 /* Linux Specific */
#define __NR__llseek 236 /* Linux Specific */
#define __NR_mlock 237
#define __NR_munlock 238
#define __NR_mlockall 239
#define __NR_munlockall 240
#define __NR_sched_setparam 241
#define __NR_sched_getparam 242
#define __NR_sched_setscheduler 243
#define __NR_sched_getscheduler 244
#define __NR_sched_yield 245
#define __NR_sched_get_priority_max 246
#define __NR_sched_get_priority_min 247
#define __NR_sched_rr_get_interval 248
#define __NR_nanosleep 249
#define __NR_mremap 250
#define __NR__sysctl 251
#define __NR_getsid 252
#define __NR_fdatasync 253
#define __NR_nfsservctl 254
#define __NR_sync_file_range 255
#define __NR_clock_settime 256
#define __NR_clock_gettime 257
#define __NR_clock_getres 258
#define __NR_clock_nanosleep 259
#define __NR_sched_getaffinity 260
#define __NR_sched_setaffinity 261
#define __NR_timer_settime 262
#define __NR_timer_gettime 263
#define __NR_timer_getoverrun 264
#define __NR_timer_delete 265
#define __NR_timer_create 266
/* #define __NR_vserver 267 Reserved for VSERVER */
#define __NR_io_setup 268
#define __NR_io_destroy 269
#define __NR_io_submit 270
#define __NR_io_cancel 271
#define __NR_io_getevents 272
#define __NR_mq_open 273
#define __NR_mq_unlink 274
#define __NR_mq_timedsend 275
#define __NR_mq_timedreceive 276
#define __NR_mq_notify 277
#define __NR_mq_getsetattr 278
#define __NR_waitid 279
#define __NR_tee 280
#define __NR_add_key 281
#define __NR_request_key 282
#define __NR_keyctl 283
#define __NR_openat 284
#define __NR_mkdirat 285
#define __NR_mknodat 286
#define __NR_fchownat 287
#define __NR_futimesat 288
#define __NR_fstatat64 289
#define __NR_unlinkat 290
#define __NR_renameat 291
#define __NR_linkat 292
#define __NR_symlinkat 293
#define __NR_readlinkat 294
#define __NR_fchmodat 295
#define __NR_faccessat 296
#define __NR_pselect6 297
#define __NR_ppoll 298
#define __NR_unshare 299
#define __NR_set_robust_list 300
#define __NR_get_robust_list 301
#define __NR_migrate_pages 302
#define __NR_mbind 303
#define __NR_get_mempolicy 304
#define __NR_set_mempolicy 305
#define __NR_kexec_load 306
#define __NR_move_pages 307
#define __NR_getcpu 308
#define __NR_epoll_pwait 309
#define __NR_utimensat 310
#define __NR_signalfd 311
#define __NR_timerfd_create 312
#define __NR_eventfd 313
#define __NR_fallocate 314
#define __NR_timerfd_settime 315
#define __NR_timerfd_gettime 316
#define __NR_signalfd4 317
#define __NR_eventfd2 318
#define __NR_epoll_create1 319
#define __NR_dup3 320
#define __NR_pipe2 321
#define __NR_inotify_init1 322
#define __NR_accept4 323
#define __NR_preadv 324
#define __NR_pwritev 325
#define __NR_rt_tgsigqueueinfo 326
#define __NR_perf_event_open 327
#define __NR_recvmmsg 328
#define __NR_fanotify_init 329
#define __NR_fanotify_mark 330
#define __NR_prlimit64 331
#define __NR_name_to_handle_at 332
#define __NR_open_by_handle_at 333
#define __NR_clock_adjtime 334
#define __NR_syncfs 335
#define __NR_sendmmsg 336
#define __NR_setns 337
#define __NR_process_vm_readv 338
#define __NR_process_vm_writev 339
#define __NR_kern_features 340
#define __NR_kcmp 341
#define __NR_finit_module 342
#define __NR_sched_setattr 343
#define __NR_sched_getattr 344
#define __NR_renameat2 345
#define __NR_seccomp 346
#define __NR_getrandom 347
#define __NR_memfd_create 348
#define __NR_bpf 349
#define __NR_execveat 350
#define __NR_membarrier 351
#define __NR_userfaultfd 352
#define __NR_bind 353
#define __NR_listen 354
#define __NR_setsockopt 355
#define __NR_mlock2 356
#define __NR_copy_file_range 357
#define __NR_preadv2 358
#define __NR_pwritev2 359
#define __NR_statx 360
#define __NR_io_pgetevents 361
#define NR_syscalls 362
/* Bitmask values returned from kern_features system call. */ /* Bitmask values returned from kern_features system call. */
#define KERN_FEATURE_MIXED_MODE_STACK 0x00000001 #define KERN_FEATURE_MIXED_MODE_STACK 0x00000001
#ifdef __32bit_syscall_numbers__
/* Sparc 32-bit only has the "setresuid32", "getresuid32" variants,
* it never had the plain ones and there is no value to adding those
* old versions into the syscall table.
*/
#define __IGNORE_setresuid
#define __IGNORE_getresuid
#define __IGNORE_setresgid
#define __IGNORE_getresgid
#endif
/* Sparc doesn't have protection keys. */
#define __IGNORE_pkey_mprotect
#define __IGNORE_pkey_alloc
#define __IGNORE_pkey_free
#endif /* _UAPI_SPARC_UNISTD_H */ #endif /* _UAPI_SPARC_UNISTD_H */

View File

@ -108,23 +108,22 @@ static int auxio_probe(struct platform_device *dev)
struct device_node *dp = dev->dev.of_node; struct device_node *dp = dev->dev.of_node;
unsigned long size; unsigned long size;
if (!strcmp(dp->parent->name, "ebus")) { if (of_node_name_eq(dp->parent, "ebus")) {
auxio_devtype = AUXIO_TYPE_EBUS; auxio_devtype = AUXIO_TYPE_EBUS;
size = sizeof(u32); size = sizeof(u32);
} else if (!strcmp(dp->parent->name, "sbus")) { } else if (of_node_name_eq(dp->parent, "sbus")) {
auxio_devtype = AUXIO_TYPE_SBUS; auxio_devtype = AUXIO_TYPE_SBUS;
size = 1; size = 1;
} else { } else {
printk("auxio: Unknown parent bus type [%s]\n", printk("auxio: Unknown parent bus type [%pOFn]\n",
dp->parent->name); dp->parent);
return -ENODEV; return -ENODEV;
} }
auxio_register = of_ioremap(&dev->resource[0], 0, size, "auxio"); auxio_register = of_ioremap(&dev->resource[0], 0, size, "auxio");
if (!auxio_register) if (!auxio_register)
return -ENODEV; return -ENODEV;
printk(KERN_INFO "AUXIO: Found device at %s\n", printk(KERN_INFO "AUXIO: Found device at %pOF\n", dp);
dp->full_name);
if (auxio_devtype == AUXIO_TYPE_EBUS) if (auxio_devtype == AUXIO_TYPE_EBUS)
auxio_set_led(AUXIO_LED_ON); auxio_set_led(AUXIO_LED_ON);

View File

@ -168,7 +168,7 @@ static int fhc_probe(struct platform_device *op)
goto out; goto out;
} }
if (!strcmp(op->dev.of_node->parent->name, "central")) if (of_node_name_eq(op->dev.of_node->parent, "central"))
p->central = true; p->central = true;
p->pregs = of_ioremap(&op->resource[0], 0, p->pregs = of_ioremap(&op->resource[0], 0,

View File

@ -464,8 +464,8 @@ static int jbusmc_probe(struct platform_device *op)
mc_list_add(&p->list); mc_list_add(&p->list);
printk(KERN_INFO PFX "UltraSPARC-IIIi memory controller at %s\n", printk(KERN_INFO PFX "UltraSPARC-IIIi memory controller at %pOF\n",
op->dev.of_node->full_name); op->dev.of_node);
dev_set_drvdata(&op->dev, p); dev_set_drvdata(&op->dev, p);
@ -747,8 +747,8 @@ static int chmc_probe(struct platform_device *op)
mc_list_add(&p->list); mc_list_add(&p->list);
printk(KERN_INFO PFX "UltraSPARC-III memory controller at %s [%s]\n", printk(KERN_INFO PFX "UltraSPARC-III memory controller at %pOF [%s]\n",
dp->full_name, dp,
(p->layout_size ? "ACTIVE" : "INACTIVE")); (p->layout_size ? "ACTIVE" : "INACTIVE"));
dev_set_drvdata(&op->dev, p); dev_set_drvdata(&op->dev, p);

View File

@ -302,7 +302,7 @@ static void *sbus_alloc_coherent(struct device *dev, size_t len,
if (sbus_map_dma_area(dev, dma_addrp, va, res->start, len_total) != 0) if (sbus_map_dma_area(dev, dma_addrp, va, res->start, len_total) != 0)
goto err_noiommu; goto err_noiommu;
res->name = op->dev.of_node->name; res->name = op->dev.of_node->full_name;
return (void *)(unsigned long)res->start; return (void *)(unsigned long)res->start;

View File

@ -915,7 +915,7 @@ static void map_prom_timers(void)
dp = of_find_node_by_path("/"); dp = of_find_node_by_path("/");
dp = dp->child; dp = dp->child;
while (dp) { while (dp) {
if (!strcmp(dp->name, "counter-timer")) if (of_node_name_eq(dp, "counter-timer"))
break; break;
dp = dp->sibling; dp = dp->sibling;
} }

View File

@ -484,20 +484,6 @@ static void leon_load_profile_irq(int cpu, unsigned int limit)
{ {
} }
void __init leon_trans_init(struct device_node *dp)
{
if (strcmp(dp->type, "cpu") == 0 && strcmp(dp->name, "<NULL>") == 0) {
struct property *p;
p = of_find_property(dp, "mid", (void *)0);
if (p) {
int mid;
dp->name = prom_early_alloc(5 + 1);
memcpy(&mid, p->value, p->length);
sprintf((char *)dp->name, "cpu%.2d", mid);
}
}
}
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
void leon_clear_profile_irq(int cpu) void leon_clear_profile_irq(int cpu)
{ {

View File

@ -22,7 +22,7 @@
static int of_bus_pci_match(struct device_node *np) static int of_bus_pci_match(struct device_node *np)
{ {
if (!strcmp(np->type, "pci") || !strcmp(np->type, "pciex")) { if (of_node_is_type(np, "pci") || of_node_is_type(np, "pciex")) {
/* Do not do PCI specific frobbing if the /* Do not do PCI specific frobbing if the
* PCI bridge lacks a ranges property. We * PCI bridge lacks a ranges property. We
* want to pass it through up to the next * want to pass it through up to the next
@ -107,7 +107,7 @@ static unsigned long of_bus_sbus_get_flags(const u32 *addr, unsigned long flags)
static int of_bus_ambapp_match(struct device_node *np) static int of_bus_ambapp_match(struct device_node *np)
{ {
return !strcmp(np->type, "ambapp"); return of_node_is_type(np, "ambapp");
} }
static void of_bus_ambapp_count_cells(struct device_node *child, static void of_bus_ambapp_count_cells(struct device_node *child,
@ -232,10 +232,10 @@ static int __init use_1to1_mapping(struct device_node *pp)
* But, we should still pass the translation work up * But, we should still pass the translation work up
* to the SBUS itself. * to the SBUS itself.
*/ */
if (!strcmp(pp->name, "dma") || if (of_node_name_eq(pp, "dma") ||
!strcmp(pp->name, "espdma") || of_node_name_eq(pp, "espdma") ||
!strcmp(pp->name, "ledma") || of_node_name_eq(pp, "ledma") ||
!strcmp(pp->name, "lebuffer")) of_node_name_eq(pp, "lebuffer"))
return 0; return 0;
return 1; return 1;
@ -324,8 +324,8 @@ static void __init build_device_resources(struct platform_device *op,
memset(r, 0, sizeof(*r)); memset(r, 0, sizeof(*r));
if (of_resource_verbose) if (of_resource_verbose)
printk("%s reg[%d] -> %llx\n", printk("%pOF reg[%d] -> %llx\n",
op->dev.of_node->full_name, index, op->dev.of_node, index,
result); result);
if (result != OF_BAD_ADDR) { if (result != OF_BAD_ADDR) {
@ -333,7 +333,7 @@ static void __init build_device_resources(struct platform_device *op,
r->end = result + size - 1; r->end = result + size - 1;
r->flags = flags | ((result >> 32ULL) & 0xffUL); r->flags = flags | ((result >> 32ULL) & 0xffUL);
} }
r->name = op->dev.of_node->name; r->name = op->dev.of_node->full_name;
} }
} }
@ -386,8 +386,7 @@ static struct platform_device * __init scan_one_device(struct device_node *dp,
op->dev.dma_mask = &op->dev.coherent_dma_mask; op->dev.dma_mask = &op->dev.coherent_dma_mask;
if (of_device_register(op)) { if (of_device_register(op)) {
printk("%s: Could not register of device.\n", printk("%pOF: Could not register of device.\n", dp);
dp->full_name);
kfree(op); kfree(op);
op = NULL; op = NULL;
} }

View File

@ -46,7 +46,7 @@ EXPORT_SYMBOL(of_iounmap);
static int of_bus_pci_match(struct device_node *np) static int of_bus_pci_match(struct device_node *np)
{ {
if (!strcmp(np->name, "pci")) { if (of_node_name_eq(np, "pci")) {
const char *model = of_get_property(np, "model", NULL); const char *model = of_get_property(np, "model", NULL);
if (model && !strcmp(model, "SUNW,simba")) if (model && !strcmp(model, "SUNW,simba"))
@ -77,7 +77,7 @@ static int of_bus_simba_match(struct device_node *np)
/* Treat PCI busses lacking ranges property just like /* Treat PCI busses lacking ranges property just like
* simba. * simba.
*/ */
if (!strcmp(np->name, "pci")) { if (of_node_name_eq(np, "pci")) {
if (!of_find_property(np, "ranges", NULL)) if (!of_find_property(np, "ranges", NULL))
return 1; return 1;
} }
@ -170,8 +170,8 @@ static unsigned long of_bus_pci_get_flags(const u32 *addr, unsigned long flags)
*/ */
static int of_bus_fhc_match(struct device_node *np) static int of_bus_fhc_match(struct device_node *np)
{ {
return !strcmp(np->name, "fhc") || return of_node_name_eq(np, "fhc") ||
!strcmp(np->name, "central"); of_node_name_eq(np, "central");
} }
#define of_bus_fhc_count_cells of_bus_sbus_count_cells #define of_bus_fhc_count_cells of_bus_sbus_count_cells
@ -295,17 +295,17 @@ static int __init use_1to1_mapping(struct device_node *pp)
* But, we should still pass the translation work up * But, we should still pass the translation work up
* to the SBUS itself. * to the SBUS itself.
*/ */
if (!strcmp(pp->name, "dma") || if (of_node_name_eq(pp, "dma") ||
!strcmp(pp->name, "espdma") || of_node_name_eq(pp, "espdma") ||
!strcmp(pp->name, "ledma") || of_node_name_eq(pp, "ledma") ||
!strcmp(pp->name, "lebuffer")) of_node_name_eq(pp, "lebuffer"))
return 0; return 0;
/* Similarly for all PCI bridges, if we get this far /* Similarly for all PCI bridges, if we get this far
* it lacks a ranges property, and this will include * it lacks a ranges property, and this will include
* cases like Simba. * cases like Simba.
*/ */
if (!strcmp(pp->name, "pci")) if (of_node_name_eq(pp, "pci"))
return 0; return 0;
return 1; return 1;
@ -341,9 +341,9 @@ static void __init build_device_resources(struct platform_device *op,
/* Prevent overrunning the op->resources[] array. */ /* Prevent overrunning the op->resources[] array. */
if (num_reg > PROMREG_MAX) { if (num_reg > PROMREG_MAX) {
printk(KERN_WARNING "%s: Too many regs (%d), " printk(KERN_WARNING "%pOF: Too many regs (%d), "
"limiting to %d.\n", "limiting to %d.\n",
op->dev.of_node->full_name, num_reg, PROMREG_MAX); op->dev.of_node, num_reg, PROMREG_MAX);
num_reg = PROMREG_MAX; num_reg = PROMREG_MAX;
} }
@ -401,8 +401,8 @@ static void __init build_device_resources(struct platform_device *op,
memset(r, 0, sizeof(*r)); memset(r, 0, sizeof(*r));
if (of_resource_verbose) if (of_resource_verbose)
printk("%s reg[%d] -> %llx\n", printk("%pOF reg[%d] -> %llx\n",
op->dev.of_node->full_name, index, op->dev.of_node, index,
result); result);
if (result != OF_BAD_ADDR) { if (result != OF_BAD_ADDR) {
@ -413,7 +413,7 @@ static void __init build_device_resources(struct platform_device *op,
r->end = result + size - 1; r->end = result + size - 1;
r->flags = flags; r->flags = flags;
} }
r->name = op->dev.of_node->name; r->name = op->dev.of_node->full_name;
} }
} }
@ -548,8 +548,8 @@ static unsigned int __init build_one_device_irq(struct platform_device *op,
dp->irq_trans->data); dp->irq_trans->data);
if (of_irq_verbose) if (of_irq_verbose)
printk("%s: direct translate %x --> %x\n", printk("%pOF: direct translate %x --> %x\n",
dp->full_name, orig_irq, irq); dp, orig_irq, irq);
goto out; goto out;
} }
@ -579,10 +579,9 @@ static unsigned int __init build_one_device_irq(struct platform_device *op,
&irq); &irq);
if (of_irq_verbose) if (of_irq_verbose)
printk("%s: Apply [%s:%x] imap --> [%s:%x]\n", printk("%pOF: Apply [%pOF:%x] imap --> [%pOF:%x]\n",
op->dev.of_node->full_name, op->dev.of_node,
pp->full_name, this_orig_irq, pp, this_orig_irq, iret, irq);
of_node_full_name(iret), irq);
if (!iret) if (!iret)
break; break;
@ -592,15 +591,15 @@ static unsigned int __init build_one_device_irq(struct platform_device *op,
break; break;
} }
} else { } else {
if (!strcmp(pp->name, "pci")) { if (of_node_name_eq(pp, "pci")) {
unsigned int this_orig_irq = irq; unsigned int this_orig_irq = irq;
irq = pci_irq_swizzle(dp, pp, irq); irq = pci_irq_swizzle(dp, pp, irq);
if (of_irq_verbose) if (of_irq_verbose)
printk("%s: PCI swizzle [%s] " printk("%pOF: PCI swizzle [%pOF] "
"%x --> %x\n", "%x --> %x\n",
op->dev.of_node->full_name, op->dev.of_node,
pp->full_name, this_orig_irq, pp, this_orig_irq,
irq); irq);
} }
@ -619,8 +618,8 @@ static unsigned int __init build_one_device_irq(struct platform_device *op,
irq = ip->irq_trans->irq_build(op->dev.of_node, irq, irq = ip->irq_trans->irq_build(op->dev.of_node, irq,
ip->irq_trans->data); ip->irq_trans->data);
if (of_irq_verbose) if (of_irq_verbose)
printk("%s: Apply IRQ trans [%s] %x --> %x\n", printk("%pOF: Apply IRQ trans [%pOF] %x --> %x\n",
op->dev.of_node->full_name, ip->full_name, orig_irq, irq); op->dev.of_node, ip, orig_irq, irq);
out: out:
nid = of_node_to_nid(dp); nid = of_node_to_nid(dp);
@ -656,9 +655,9 @@ static struct platform_device * __init scan_one_device(struct device_node *dp,
/* Prevent overrunning the op->irqs[] array. */ /* Prevent overrunning the op->irqs[] array. */
if (op->archdata.num_irqs > PROMINTR_MAX) { if (op->archdata.num_irqs > PROMINTR_MAX) {
printk(KERN_WARNING "%s: Too many irqs (%d), " printk(KERN_WARNING "%pOF: Too many irqs (%d), "
"limiting to %d.\n", "limiting to %d.\n",
dp->full_name, op->archdata.num_irqs, PROMINTR_MAX); dp, op->archdata.num_irqs, PROMINTR_MAX);
op->archdata.num_irqs = PROMINTR_MAX; op->archdata.num_irqs = PROMINTR_MAX;
} }
memcpy(op->archdata.irqs, irq, op->archdata.num_irqs * 4); memcpy(op->archdata.irqs, irq, op->archdata.num_irqs * 4);
@ -680,8 +679,7 @@ static struct platform_device * __init scan_one_device(struct device_node *dp,
op->dev.dma_mask = &op->dev.coherent_dma_mask; op->dev.dma_mask = &op->dev.coherent_dma_mask;
if (of_device_register(op)) { if (of_device_register(op)) {
printk("%s: Could not register of device.\n", printk("%pOF: Could not register of device.\n", dp);
dp->full_name);
kfree(op); kfree(op);
op = NULL; op = NULL;
} }

View File

@ -151,8 +151,8 @@ int of_bus_sbus_match(struct device_node *np)
struct device_node *dp = np; struct device_node *dp = np;
while (dp) { while (dp) {
if (!strcmp(dp->name, "sbus") || if (of_node_name_eq(dp, "sbus") ||
!strcmp(dp->name, "sbi")) of_node_name_eq(dp, "sbi"))
return 1; return 1;
/* Have a look at use_1to1_mapping(). We're trying /* Have a look at use_1to1_mapping(). We're trying

View File

@ -267,7 +267,6 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
struct dev_archdata *sd; struct dev_archdata *sd;
struct platform_device *op; struct platform_device *op;
struct pci_dev *dev; struct pci_dev *dev;
const char *type;
u32 class; u32 class;
dev = pci_alloc_dev(bus); dev = pci_alloc_dev(bus);
@ -283,16 +282,12 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
sd->stc = &pbm->stc; sd->stc = &pbm->stc;
sd->numa_node = pbm->numa_node; sd->numa_node = pbm->numa_node;
if (!strcmp(node->name, "ebus")) if (of_node_name_eq(node, "ebus"))
of_propagate_archdata(op); of_propagate_archdata(op);
type = of_get_property(node, "device_type", NULL);
if (type == NULL)
type = "";
if (ofpci_verbose) if (ofpci_verbose)
pci_info(bus," create device, devfn: %x, type: %s\n", pci_info(bus," create device, devfn: %x, type: %s\n",
devfn, type); devfn, of_node_get_device_type(node));
dev->sysdata = node; dev->sysdata = node;
dev->dev.parent = bus->bridge; dev->dev.parent = bus->bridge;
@ -336,11 +331,11 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
dev->error_state = pci_channel_io_normal; dev->error_state = pci_channel_io_normal;
dev->dma_mask = 0xffffffff; dev->dma_mask = 0xffffffff;
if (!strcmp(node->name, "pci")) { if (of_node_name_eq(node, "pci")) {
/* a PCI-PCI bridge */ /* a PCI-PCI bridge */
dev->hdr_type = PCI_HEADER_TYPE_BRIDGE; dev->hdr_type = PCI_HEADER_TYPE_BRIDGE;
dev->rom_base_reg = PCI_ROM_ADDRESS1; dev->rom_base_reg = PCI_ROM_ADDRESS1;
} else if (!strcmp(type, "cardbus")) { } else if (of_node_is_type(node, "cardbus")) {
dev->hdr_type = PCI_HEADER_TYPE_CARDBUS; dev->hdr_type = PCI_HEADER_TYPE_CARDBUS;
} else { } else {
dev->hdr_type = PCI_HEADER_TYPE_NORMAL; dev->hdr_type = PCI_HEADER_TYPE_NORMAL;
@ -431,13 +426,13 @@ static void of_scan_pci_bridge(struct pci_pbm_info *pbm,
u64 size; u64 size;
if (ofpci_verbose) if (ofpci_verbose)
pci_info(dev, "of_scan_pci_bridge(%s)\n", node->full_name); pci_info(dev, "of_scan_pci_bridge(%pOF)\n", node);
/* parse bus-range property */ /* parse bus-range property */
busrange = of_get_property(node, "bus-range", &len); busrange = of_get_property(node, "bus-range", &len);
if (busrange == NULL || len != 8) { if (busrange == NULL || len != 8) {
pci_info(dev, "Can't get bus-range for PCI-PCI bridge %s\n", pci_info(dev, "Can't get bus-range for PCI-PCI bridge %pOF\n",
node->full_name); node);
return; return;
} }
@ -455,8 +450,8 @@ static void of_scan_pci_bridge(struct pci_pbm_info *pbm,
bus = pci_add_new_bus(dev->bus, dev, busrange[0]); bus = pci_add_new_bus(dev->bus, dev, busrange[0]);
if (!bus) { if (!bus) {
pci_err(dev, "Failed to create pci bus for %s\n", pci_err(dev, "Failed to create pci bus for %pOF\n",
node->full_name); node);
return; return;
} }
@ -512,13 +507,13 @@ static void of_scan_pci_bridge(struct pci_pbm_info *pbm,
res = bus->resource[0]; res = bus->resource[0];
if (res->flags) { if (res->flags) {
pci_err(dev, "ignoring extra I/O range" pci_err(dev, "ignoring extra I/O range"
" for bridge %s\n", node->full_name); " for bridge %pOF\n", node);
continue; continue;
} }
} else { } else {
if (i >= PCI_NUM_RESOURCES - PCI_BRIDGE_RESOURCES) { if (i >= PCI_NUM_RESOURCES - PCI_BRIDGE_RESOURCES) {
pci_err(dev, "too many memory ranges" pci_err(dev, "too many memory ranges"
" for bridge %s\n", node->full_name); " for bridge %pOF\n", node);
continue; continue;
} }
res = bus->resource[i]; res = bus->resource[i];
@ -554,14 +549,14 @@ static void pci_of_scan_bus(struct pci_pbm_info *pbm,
struct pci_dev *dev; struct pci_dev *dev;
if (ofpci_verbose) if (ofpci_verbose)
pci_info(bus, "scan_bus[%s] bus no %d\n", pci_info(bus, "scan_bus[%pOF] bus no %d\n",
node->full_name, bus->number); node, bus->number);
child = NULL; child = NULL;
prev_devfn = -1; prev_devfn = -1;
while ((child = of_get_next_child(node, child)) != NULL) { while ((child = of_get_next_child(node, child)) != NULL) {
if (ofpci_verbose) if (ofpci_verbose)
pci_info(bus, " * %s\n", child->full_name); pci_info(bus, " * %pOF\n", child);
reg = of_get_property(child, "reg", &reglen); reg = of_get_property(child, "reg", &reglen);
if (reg == NULL || reglen < 20) if (reg == NULL || reglen < 20)
continue; continue;
@ -598,7 +593,7 @@ show_pciobppath_attr(struct device * dev, struct device_attribute * attr, char *
pdev = to_pci_dev(dev); pdev = to_pci_dev(dev);
dp = pdev->dev.of_node; dp = pdev->dev.of_node;
return snprintf (buf, PAGE_SIZE, "%s\n", dp->full_name); return snprintf (buf, PAGE_SIZE, "%pOF\n", dp);
} }
static DEVICE_ATTR(obppath, S_IRUSR | S_IRGRP | S_IROTH, show_pciobppath_attr, NULL); static DEVICE_ATTR(obppath, S_IRUSR | S_IRGRP | S_IROTH, show_pciobppath_attr, NULL);
@ -698,7 +693,7 @@ struct pci_bus *pci_scan_one_pbm(struct pci_pbm_info *pbm,
struct device_node *node = pbm->op->dev.of_node; struct device_node *node = pbm->op->dev.of_node;
struct pci_bus *bus; struct pci_bus *bus;
printk("PCI: Scanning PBM %s\n", node->full_name); printk("PCI: Scanning PBM %pOF\n", node);
pci_add_resource_offset(&resources, &pbm->io_space, pci_add_resource_offset(&resources, &pbm->io_space,
pbm->io_offset); pbm->io_offset);
@ -714,8 +709,7 @@ struct pci_bus *pci_scan_one_pbm(struct pci_pbm_info *pbm,
bus = pci_create_root_bus(parent, pbm->pci_first_busno, pbm->pci_ops, bus = pci_create_root_bus(parent, pbm->pci_first_busno, pbm->pci_ops,
pbm, &resources); pbm, &resources);
if (!bus) { if (!bus) {
printk(KERN_ERR "Failed to create bus for %s\n", printk(KERN_ERR "Failed to create bus for %pOF\n", node);
node->full_name);
pci_free_resource_list(&resources); pci_free_resource_list(&resources);
return NULL; return NULL;
} }
@ -1111,8 +1105,8 @@ static void pci_bus_slot_names(struct device_node *node, struct pci_bus *bus)
sp = prop->names; sp = prop->names;
if (ofpci_verbose) if (ofpci_verbose)
pci_info(bus, "Making slots for [%s] mask[0x%02x]\n", pci_info(bus, "Making slots for [%pOF] mask[0x%02x]\n",
node->full_name, mask); node, mask);
i = 0; i = 0;
while (mask) { while (mask) {

View File

@ -475,7 +475,7 @@ static int sabre_probe(struct platform_device *op)
* different ways, inconsistently. * different ways, inconsistently.
*/ */
for_each_node_by_type(cpu_dp, "cpu") { for_each_node_by_type(cpu_dp, "cpu") {
if (!strcmp(cpu_dp->name, "SUNW,UltraSPARC-IIe")) if (of_node_name_eq(cpu_dp, "SUNW,UltraSPARC-IIe"))
hummingbird_p = 1; hummingbird_p = 1;
} }
} }

View File

@ -41,8 +41,8 @@ static int power_probe(struct platform_device *op)
power_reg = of_ioremap(res, 0, 0x4, "power"); power_reg = of_ioremap(res, 0, 0x4, "power");
printk(KERN_INFO "%s: Control reg at %llx\n", printk(KERN_INFO "%pOFn: Control reg at %llx\n",
op->dev.of_node->name, res->start); op->dev.of_node, res->start);
if (has_button_interrupt(irq, op->dev.of_node)) { if (has_button_interrupt(irq, op->dev.of_node)) {
if (request_irq(irq, if (request_irq(irq,

View File

@ -110,7 +110,7 @@ void machine_restart(char * cmd)
void machine_power_off(void) void machine_power_off(void)
{ {
if (auxio_power_register && if (auxio_power_register &&
(strcmp(of_console_device->type, "serial") || scons_pwroff)) { (!of_node_is_type(of_console_device, "serial") || scons_pwroff)) {
u8 power_register = sbus_readb(auxio_power_register); u8 power_register = sbus_readb(auxio_power_register);
power_register |= AUXIO_POWER_OFF; power_register |= AUXIO_POWER_OFF;
sbus_writeb(power_register, auxio_power_register); sbus_writeb(power_register, auxio_power_register);

View File

@ -60,6 +60,7 @@ void * __init prom_early_alloc(unsigned long size)
*/ */
static void __init sparc32_path_component(struct device_node *dp, char *tmp_buf) static void __init sparc32_path_component(struct device_node *dp, char *tmp_buf)
{ {
const char *name = of_get_property(dp, "name", NULL);
struct linux_prom_registers *regs; struct linux_prom_registers *regs;
struct property *rprop; struct property *rprop;
@ -69,13 +70,14 @@ static void __init sparc32_path_component(struct device_node *dp, char *tmp_buf)
regs = rprop->value; regs = rprop->value;
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
regs->which_io, regs->phys_addr); regs->which_io, regs->phys_addr);
} }
/* "name@slot,offset" */ /* "name@slot,offset" */
static void __init sbus_path_component(struct device_node *dp, char *tmp_buf) static void __init sbus_path_component(struct device_node *dp, char *tmp_buf)
{ {
const char *name = of_get_property(dp, "name", NULL);
struct linux_prom_registers *regs; struct linux_prom_registers *regs;
struct property *prop; struct property *prop;
@ -85,7 +87,7 @@ static void __init sbus_path_component(struct device_node *dp, char *tmp_buf)
regs = prop->value; regs = prop->value;
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
regs->which_io, regs->which_io,
regs->phys_addr); regs->phys_addr);
} }
@ -93,6 +95,7 @@ static void __init sbus_path_component(struct device_node *dp, char *tmp_buf)
/* "name@devnum[,func]" */ /* "name@devnum[,func]" */
static void __init pci_path_component(struct device_node *dp, char *tmp_buf) static void __init pci_path_component(struct device_node *dp, char *tmp_buf)
{ {
const char *name = of_get_property(dp, "name", NULL);
struct linux_prom_pci_registers *regs; struct linux_prom_pci_registers *regs;
struct property *prop; struct property *prop;
unsigned int devfn; unsigned int devfn;
@ -105,12 +108,12 @@ static void __init pci_path_component(struct device_node *dp, char *tmp_buf)
devfn = (regs->phys_hi >> 8) & 0xff; devfn = (regs->phys_hi >> 8) & 0xff;
if (devfn & 0x07) { if (devfn & 0x07) {
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
devfn >> 3, devfn >> 3,
devfn & 0x07); devfn & 0x07);
} else { } else {
sprintf(tmp_buf, "%s@%x", sprintf(tmp_buf, "%s@%x",
dp->name, name,
devfn >> 3); devfn >> 3);
} }
} }
@ -118,6 +121,7 @@ static void __init pci_path_component(struct device_node *dp, char *tmp_buf)
/* "name@addrhi,addrlo" */ /* "name@addrhi,addrlo" */
static void __init ebus_path_component(struct device_node *dp, char *tmp_buf) static void __init ebus_path_component(struct device_node *dp, char *tmp_buf)
{ {
const char *name = of_get_property(dp, "name", NULL);
struct linux_prom_registers *regs; struct linux_prom_registers *regs;
struct property *prop; struct property *prop;
@ -128,13 +132,14 @@ static void __init ebus_path_component(struct device_node *dp, char *tmp_buf)
regs = prop->value; regs = prop->value;
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
regs->which_io, regs->phys_addr); regs->which_io, regs->phys_addr);
} }
/* "name:vendor:device@irq,addrlo" */ /* "name:vendor:device@irq,addrlo" */
static void __init ambapp_path_component(struct device_node *dp, char *tmp_buf) static void __init ambapp_path_component(struct device_node *dp, char *tmp_buf)
{ {
const char *name = of_get_property(dp, "name", NULL);
struct amba_prom_registers *regs; struct amba_prom_registers *regs;
unsigned int *intr, *device, *vendor, reg0; unsigned int *intr, *device, *vendor, reg0;
struct property *prop; struct property *prop;
@ -168,7 +173,7 @@ static void __init ambapp_path_component(struct device_node *dp, char *tmp_buf)
device = prop->value; device = prop->value;
sprintf(tmp_buf, "%s:%d:%d@%x,%x", sprintf(tmp_buf, "%s:%d:%d@%x,%x",
dp->name, *vendor, *device, name, *vendor, *device,
*intr, reg0); *intr, reg0);
} }
@ -177,14 +182,14 @@ static void __init __build_path_component(struct device_node *dp, char *tmp_buf)
struct device_node *parent = dp->parent; struct device_node *parent = dp->parent;
if (parent != NULL) { if (parent != NULL) {
if (!strcmp(parent->type, "pci") || if (of_node_is_type(parent, "pci") ||
!strcmp(parent->type, "pciex")) of_node_is_type(parent, "pciex"))
return pci_path_component(dp, tmp_buf); return pci_path_component(dp, tmp_buf);
if (!strcmp(parent->type, "sbus")) if (of_node_is_type(parent, "sbus"))
return sbus_path_component(dp, tmp_buf); return sbus_path_component(dp, tmp_buf);
if (!strcmp(parent->type, "ebus")) if (of_node_is_type(parent, "ebus"))
return ebus_path_component(dp, tmp_buf); return ebus_path_component(dp, tmp_buf);
if (!strcmp(parent->type, "ambapp")) if (of_node_is_type(parent, "ambapp"))
return ambapp_path_component(dp, tmp_buf); return ambapp_path_component(dp, tmp_buf);
/* "isa" is handled with platform naming */ /* "isa" is handled with platform naming */
@ -196,12 +201,13 @@ static void __init __build_path_component(struct device_node *dp, char *tmp_buf)
char * __init build_path_component(struct device_node *dp) char * __init build_path_component(struct device_node *dp)
{ {
const char *name = of_get_property(dp, "name", NULL);
char tmp_buf[64], *n; char tmp_buf[64], *n;
tmp_buf[0] = '\0'; tmp_buf[0] = '\0';
__build_path_component(dp, tmp_buf); __build_path_component(dp, tmp_buf);
if (tmp_buf[0] == '\0') if (tmp_buf[0] == '\0')
strcpy(tmp_buf, dp->name); strcpy(tmp_buf, name);
n = prom_early_alloc(strlen(tmp_buf) + 1); n = prom_early_alloc(strlen(tmp_buf) + 1);
strcpy(n, tmp_buf); strcpy(n, tmp_buf);
@ -255,7 +261,7 @@ void __init of_console_init(void)
} }
of_console_device = dp; of_console_device = dp;
strcpy(of_console_path, dp->full_name); sprintf(of_console_path, "%pOF", dp);
if (!strcmp(type, "serial")) { if (!strcmp(type, "serial")) {
strcat(of_console_path, strcat(of_console_path,
(skip ? ":b" : ":a")); (skip ? ":b" : ":a"));
@ -278,15 +284,9 @@ void __init of_console_init(void)
prom_halt(); prom_halt();
} }
dp = of_find_node_by_phandle(node); dp = of_find_node_by_phandle(node);
type = of_get_property(dp, "device_type", NULL);
if (!type) { if (!of_node_is_type(dp, "display") &&
prom_printf("Console stdout lacks " !of_node_is_type(dp, "serial")) {
"device_type property.\n");
prom_halt();
}
if (strcmp(type, "display") && strcmp(type, "serial")) {
prom_printf("Console device_type is neither display " prom_printf("Console device_type is neither display "
"nor serial.\n"); "nor serial.\n");
prom_halt(); prom_halt();
@ -295,7 +295,7 @@ void __init of_console_init(void)
of_console_device = dp; of_console_device = dp;
if (prom_vers == PROM_V2) { if (prom_vers == PROM_V2) {
strcpy(of_console_path, dp->full_name); sprintf(of_console_path, "%pOF", dp);
switch (*romvec->pv_stdout) { switch (*romvec->pv_stdout) {
case PROMDEV_TTYA: case PROMDEV_TTYA:
strcat(of_console_path, ":a"); strcat(of_console_path, ":a");

View File

@ -72,6 +72,7 @@ void * __init prom_early_alloc(unsigned long size)
*/ */
static void __init sun4v_path_component(struct device_node *dp, char *tmp_buf) static void __init sun4v_path_component(struct device_node *dp, char *tmp_buf)
{ {
const char *name = of_get_property(dp, "name", NULL);
struct linux_prom64_registers *regs; struct linux_prom64_registers *regs;
struct property *rprop; struct property *rprop;
u32 high_bits, low_bits, type; u32 high_bits, low_bits, type;
@ -83,7 +84,7 @@ static void __init sun4v_path_component(struct device_node *dp, char *tmp_buf)
regs = rprop->value; regs = rprop->value;
if (!of_node_is_root(dp->parent)) { if (!of_node_is_root(dp->parent)) {
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
(unsigned int) (regs->phys_addr >> 32UL), (unsigned int) (regs->phys_addr >> 32UL),
(unsigned int) (regs->phys_addr & 0xffffffffUL)); (unsigned int) (regs->phys_addr & 0xffffffffUL));
return; return;
@ -98,21 +99,22 @@ static void __init sun4v_path_component(struct device_node *dp, char *tmp_buf)
if (low_bits) if (low_bits)
sprintf(tmp_buf, "%s@%s%x,%x", sprintf(tmp_buf, "%s@%s%x,%x",
dp->name, prefix, name, prefix,
high_bits, low_bits); high_bits, low_bits);
else else
sprintf(tmp_buf, "%s@%s%x", sprintf(tmp_buf, "%s@%s%x",
dp->name, name,
prefix, prefix,
high_bits); high_bits);
} else if (type == 12) { } else if (type == 12) {
sprintf(tmp_buf, "%s@%x", sprintf(tmp_buf, "%s@%x",
dp->name, high_bits); name, high_bits);
} }
} }
static void __init sun4u_path_component(struct device_node *dp, char *tmp_buf) static void __init sun4u_path_component(struct device_node *dp, char *tmp_buf)
{ {
const char *name = of_get_property(dp, "name", NULL);
struct linux_prom64_registers *regs; struct linux_prom64_registers *regs;
struct property *prop; struct property *prop;
@ -123,7 +125,7 @@ static void __init sun4u_path_component(struct device_node *dp, char *tmp_buf)
regs = prop->value; regs = prop->value;
if (!of_node_is_root(dp->parent)) { if (!of_node_is_root(dp->parent)) {
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
(unsigned int) (regs->phys_addr >> 32UL), (unsigned int) (regs->phys_addr >> 32UL),
(unsigned int) (regs->phys_addr & 0xffffffffUL)); (unsigned int) (regs->phys_addr & 0xffffffffUL));
return; return;
@ -139,7 +141,7 @@ static void __init sun4u_path_component(struct device_node *dp, char *tmp_buf)
mask = 0x7fffff; mask = 0x7fffff;
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
*(u32 *)prop->value, *(u32 *)prop->value,
(unsigned int) (regs->phys_addr & mask)); (unsigned int) (regs->phys_addr & mask));
} }
@ -148,6 +150,7 @@ static void __init sun4u_path_component(struct device_node *dp, char *tmp_buf)
/* "name@slot,offset" */ /* "name@slot,offset" */
static void __init sbus_path_component(struct device_node *dp, char *tmp_buf) static void __init sbus_path_component(struct device_node *dp, char *tmp_buf)
{ {
const char *name = of_get_property(dp, "name", NULL);
struct linux_prom_registers *regs; struct linux_prom_registers *regs;
struct property *prop; struct property *prop;
@ -157,7 +160,7 @@ static void __init sbus_path_component(struct device_node *dp, char *tmp_buf)
regs = prop->value; regs = prop->value;
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
regs->which_io, regs->which_io,
regs->phys_addr); regs->phys_addr);
} }
@ -165,6 +168,7 @@ static void __init sbus_path_component(struct device_node *dp, char *tmp_buf)
/* "name@devnum[,func]" */ /* "name@devnum[,func]" */
static void __init pci_path_component(struct device_node *dp, char *tmp_buf) static void __init pci_path_component(struct device_node *dp, char *tmp_buf)
{ {
const char *name = of_get_property(dp, "name", NULL);
struct linux_prom_pci_registers *regs; struct linux_prom_pci_registers *regs;
struct property *prop; struct property *prop;
unsigned int devfn; unsigned int devfn;
@ -177,12 +181,12 @@ static void __init pci_path_component(struct device_node *dp, char *tmp_buf)
devfn = (regs->phys_hi >> 8) & 0xff; devfn = (regs->phys_hi >> 8) & 0xff;
if (devfn & 0x07) { if (devfn & 0x07) {
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
devfn >> 3, devfn >> 3,
devfn & 0x07); devfn & 0x07);
} else { } else {
sprintf(tmp_buf, "%s@%x", sprintf(tmp_buf, "%s@%x",
dp->name, name,
devfn >> 3); devfn >> 3);
} }
} }
@ -190,6 +194,7 @@ static void __init pci_path_component(struct device_node *dp, char *tmp_buf)
/* "name@UPA_PORTID,offset" */ /* "name@UPA_PORTID,offset" */
static void __init upa_path_component(struct device_node *dp, char *tmp_buf) static void __init upa_path_component(struct device_node *dp, char *tmp_buf)
{ {
const char *name = of_get_property(dp, "name", NULL);
struct linux_prom64_registers *regs; struct linux_prom64_registers *regs;
struct property *prop; struct property *prop;
@ -204,7 +209,7 @@ static void __init upa_path_component(struct device_node *dp, char *tmp_buf)
return; return;
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
*(u32 *) prop->value, *(u32 *) prop->value,
(unsigned int) (regs->phys_addr & 0xffffffffUL)); (unsigned int) (regs->phys_addr & 0xffffffffUL));
} }
@ -212,6 +217,7 @@ static void __init upa_path_component(struct device_node *dp, char *tmp_buf)
/* "name@reg" */ /* "name@reg" */
static void __init vdev_path_component(struct device_node *dp, char *tmp_buf) static void __init vdev_path_component(struct device_node *dp, char *tmp_buf)
{ {
const char *name = of_get_property(dp, "name", NULL);
struct property *prop; struct property *prop;
u32 *regs; u32 *regs;
@ -221,12 +227,13 @@ static void __init vdev_path_component(struct device_node *dp, char *tmp_buf)
regs = prop->value; regs = prop->value;
sprintf(tmp_buf, "%s@%x", dp->name, *regs); sprintf(tmp_buf, "%s@%x", name, *regs);
} }
/* "name@addrhi,addrlo" */ /* "name@addrhi,addrlo" */
static void __init ebus_path_component(struct device_node *dp, char *tmp_buf) static void __init ebus_path_component(struct device_node *dp, char *tmp_buf)
{ {
const char *name = of_get_property(dp, "name", NULL);
struct linux_prom64_registers *regs; struct linux_prom64_registers *regs;
struct property *prop; struct property *prop;
@ -237,7 +244,7 @@ static void __init ebus_path_component(struct device_node *dp, char *tmp_buf)
regs = prop->value; regs = prop->value;
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, name,
(unsigned int) (regs->phys_addr >> 32UL), (unsigned int) (regs->phys_addr >> 32UL),
(unsigned int) (regs->phys_addr & 0xffffffffUL)); (unsigned int) (regs->phys_addr & 0xffffffffUL));
} }
@ -245,6 +252,7 @@ static void __init ebus_path_component(struct device_node *dp, char *tmp_buf)
/* "name@bus,addr" */ /* "name@bus,addr" */
static void __init i2c_path_component(struct device_node *dp, char *tmp_buf) static void __init i2c_path_component(struct device_node *dp, char *tmp_buf)
{ {
const char *name = of_get_property(dp, "name", NULL);
struct property *prop; struct property *prop;
u32 *regs; u32 *regs;
@ -258,12 +266,13 @@ static void __init i2c_path_component(struct device_node *dp, char *tmp_buf)
* property of the i2c bus node etc. etc. * property of the i2c bus node etc. etc.
*/ */
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, regs[0], regs[1]); name, regs[0], regs[1]);
} }
/* "name@reg0[,reg1]" */ /* "name@reg0[,reg1]" */
static void __init usb_path_component(struct device_node *dp, char *tmp_buf) static void __init usb_path_component(struct device_node *dp, char *tmp_buf)
{ {
const char *name = of_get_property(dp, "name", NULL);
struct property *prop; struct property *prop;
u32 *regs; u32 *regs;
@ -275,16 +284,17 @@ static void __init usb_path_component(struct device_node *dp, char *tmp_buf)
if (prop->length == sizeof(u32) || regs[1] == 1) { if (prop->length == sizeof(u32) || regs[1] == 1) {
sprintf(tmp_buf, "%s@%x", sprintf(tmp_buf, "%s@%x",
dp->name, regs[0]); name, regs[0]);
} else { } else {
sprintf(tmp_buf, "%s@%x,%x", sprintf(tmp_buf, "%s@%x,%x",
dp->name, regs[0], regs[1]); name, regs[0], regs[1]);
} }
} }
/* "name@reg0reg1[,reg2reg3]" */ /* "name@reg0reg1[,reg2reg3]" */
static void __init ieee1394_path_component(struct device_node *dp, char *tmp_buf) static void __init ieee1394_path_component(struct device_node *dp, char *tmp_buf)
{ {
const char *name = of_get_property(dp, "name", NULL);
struct property *prop; struct property *prop;
u32 *regs; u32 *regs;
@ -296,10 +306,10 @@ static void __init ieee1394_path_component(struct device_node *dp, char *tmp_buf
if (regs[2] || regs[3]) { if (regs[2] || regs[3]) {
sprintf(tmp_buf, "%s@%08x%08x,%04x%08x", sprintf(tmp_buf, "%s@%08x%08x,%04x%08x",
dp->name, regs[0], regs[1], regs[2], regs[3]); name, regs[0], regs[1], regs[2], regs[3]);
} else { } else {
sprintf(tmp_buf, "%s@%08x%08x", sprintf(tmp_buf, "%s@%08x%08x",
dp->name, regs[0], regs[1]); name, regs[0], regs[1]);
} }
} }
@ -308,37 +318,37 @@ static void __init __build_path_component(struct device_node *dp, char *tmp_buf)
struct device_node *parent = dp->parent; struct device_node *parent = dp->parent;
if (parent != NULL) { if (parent != NULL) {
if (!strcmp(parent->type, "pci") || if (of_node_is_type(parent, "pci") ||
!strcmp(parent->type, "pciex")) { of_node_is_type(parent, "pciex")) {
pci_path_component(dp, tmp_buf); pci_path_component(dp, tmp_buf);
return; return;
} }
if (!strcmp(parent->type, "sbus")) { if (of_node_is_type(parent, "sbus")) {
sbus_path_component(dp, tmp_buf); sbus_path_component(dp, tmp_buf);
return; return;
} }
if (!strcmp(parent->type, "upa")) { if (of_node_is_type(parent, "upa")) {
upa_path_component(dp, tmp_buf); upa_path_component(dp, tmp_buf);
return; return;
} }
if (!strcmp(parent->type, "ebus")) { if (of_node_is_type(parent, "ebus")) {
ebus_path_component(dp, tmp_buf); ebus_path_component(dp, tmp_buf);
return; return;
} }
if (!strcmp(parent->name, "usb") || if (of_node_name_eq(parent, "usb") ||
!strcmp(parent->name, "hub")) { of_node_name_eq(parent, "hub")) {
usb_path_component(dp, tmp_buf); usb_path_component(dp, tmp_buf);
return; return;
} }
if (!strcmp(parent->type, "i2c")) { if (of_node_is_type(parent, "i2c")) {
i2c_path_component(dp, tmp_buf); i2c_path_component(dp, tmp_buf);
return; return;
} }
if (!strcmp(parent->type, "firewire")) { if (of_node_is_type(parent, "firewire")) {
ieee1394_path_component(dp, tmp_buf); ieee1394_path_component(dp, tmp_buf);
return; return;
} }
if (!strcmp(parent->type, "virtual-devices")) { if (of_node_is_type(parent, "virtual-devices")) {
vdev_path_component(dp, tmp_buf); vdev_path_component(dp, tmp_buf);
return; return;
} }
@ -356,12 +366,13 @@ static void __init __build_path_component(struct device_node *dp, char *tmp_buf)
char * __init build_path_component(struct device_node *dp) char * __init build_path_component(struct device_node *dp)
{ {
const char *name = of_get_property(dp, "name", NULL);
char tmp_buf[64], *n; char tmp_buf[64], *n;
tmp_buf[0] = '\0'; tmp_buf[0] = '\0';
__build_path_component(dp, tmp_buf); __build_path_component(dp, tmp_buf);
if (tmp_buf[0] == '\0') if (tmp_buf[0] == '\0')
strcpy(tmp_buf, dp->name); strcpy(tmp_buf, name);
n = prom_early_alloc(strlen(tmp_buf) + 1); n = prom_early_alloc(strlen(tmp_buf) + 1);
strcpy(n, tmp_buf); strcpy(n, tmp_buf);
@ -594,7 +605,6 @@ void __init of_console_init(void)
{ {
char *msg = "OF stdout device is: %s\n"; char *msg = "OF stdout device is: %s\n";
struct device_node *dp; struct device_node *dp;
const char *type;
phandle node; phandle node;
of_console_path = prom_early_alloc(256); of_console_path = prom_early_alloc(256);
@ -617,13 +627,8 @@ void __init of_console_init(void)
} }
dp = of_find_node_by_phandle(node); dp = of_find_node_by_phandle(node);
type = of_get_property(dp, "device_type", NULL);
if (!type) {
prom_printf("Console stdout lacks device_type property.\n");
prom_halt();
}
if (strcmp(type, "display") && strcmp(type, "serial")) { if (!of_node_is_type(dp, "display") && !of_node_is_type(dp, "serial")) {
prom_printf("Console device_type is neither display " prom_printf("Console device_type is neither display "
"nor serial.\n"); "nor serial.\n");
prom_halt(); prom_halt();

View File

@ -193,7 +193,7 @@ static int sabre_device_needs_wsync(struct device_node *dp)
* the DMA synchronization handling * the DMA synchronization handling
*/ */
while (parent) { while (parent) {
if (!strcmp(parent->type, "pci")) if (of_node_is_type(parent, "pci"))
break; break;
parent = parent->parent; parent = parent->parent;
} }
@ -725,11 +725,11 @@ static unsigned int central_build_irq(struct device_node *dp,
unsigned long imap, iclr; unsigned long imap, iclr;
u32 tmp; u32 tmp;
if (!strcmp(dp->name, "eeprom")) { if (of_node_name_eq(dp, "eeprom")) {
res = &central_op->resource[5]; res = &central_op->resource[5];
} else if (!strcmp(dp->name, "zs")) { } else if (of_node_name_eq(dp, "zs")) {
res = &central_op->resource[4]; res = &central_op->resource[4];
} else if (!strcmp(dp->name, "clock-board")) { } else if (of_node_name_eq(dp, "clock-board")) {
res = &central_op->resource[3]; res = &central_op->resource[3];
} else { } else {
return ino; return ino;
@ -824,19 +824,19 @@ void __init irq_trans_init(struct device_node *dp)
} }
#endif #endif
#ifdef CONFIG_SBUS #ifdef CONFIG_SBUS
if (!strcmp(dp->name, "sbus") || if (of_node_name_eq(dp, "sbus") ||
!strcmp(dp->name, "sbi")) { of_node_name_eq(dp, "sbi")) {
sbus_irq_trans_init(dp); sbus_irq_trans_init(dp);
return; return;
} }
#endif #endif
if (!strcmp(dp->name, "fhc") && if (of_node_name_eq(dp, "fhc") &&
!strcmp(dp->parent->name, "central")) { of_node_name_eq(dp->parent, "central")) {
central_irq_trans_init(dp); central_irq_trans_init(dp);
return; return;
} }
if (!strcmp(dp->name, "virtual-devices") || if (of_node_name_eq(dp, "virtual-devices") ||
!strcmp(dp->name, "niu")) { of_node_name_eq(dp, "niu")) {
sun4v_vdev_irq_trans_init(dp); sun4v_vdev_irq_trans_init(dp);
return; return;
} }

View File

@ -7,6 +7,7 @@
#include <linux/reboot.h> #include <linux/reboot.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/pm.h> #include <linux/pm.h>
#include <linux/of.h>
#include <asm/oplib.h> #include <asm/oplib.h>
#include <asm/prom.h> #include <asm/prom.h>
@ -25,7 +26,7 @@ EXPORT_SYMBOL(pm_power_off);
void machine_power_off(void) void machine_power_off(void)
{ {
if (strcmp(of_console_device->type, "serial") || scons_pwroff) if (!of_node_is_type(of_console_device, "serial") || scons_pwroff)
prom_halt_power_off(); prom_halt_power_off();
prom_halt(); prom_halt();

View File

@ -67,8 +67,8 @@ void sbus_set_sbus64(struct device *dev, int bursts)
regs = of_get_property(op->dev.of_node, "reg", NULL); regs = of_get_property(op->dev.of_node, "reg", NULL);
if (!regs) { if (!regs) {
printk(KERN_ERR "sbus_set_sbus64: Cannot find regs for %s\n", printk(KERN_ERR "sbus_set_sbus64: Cannot find regs for %pOF\n",
op->dev.of_node->full_name); op->dev.of_node);
return; return;
} }
slot = regs->which_io; slot = regs->which_io;

View File

@ -335,12 +335,12 @@ static unsigned int sun4d_build_device_irq(struct platform_device *op,
irq = real_irq; irq = real_irq;
while (bus) { while (bus) {
if (!strcmp(bus->name, "sbi")) { if (of_node_name_eq(bus, "sbi")) {
bus_connection = "io-unit"; bus_connection = "io-unit";
break; break;
} }
if (!strcmp(bus->name, "bootbus")) { if (of_node_name_eq(bus, "bootbus")) {
bus_connection = "cpu-unit"; bus_connection = "cpu-unit";
break; break;
} }
@ -360,16 +360,16 @@ static unsigned int sun4d_build_device_irq(struct platform_device *op,
* If Bus nodes parent is not io-unit/cpu-unit or the io-unit/cpu-unit * If Bus nodes parent is not io-unit/cpu-unit or the io-unit/cpu-unit
* lacks a "board#" property, something is very wrong. * lacks a "board#" property, something is very wrong.
*/ */
if (!bus->parent || strcmp(bus->parent->name, bus_connection)) { if (!of_node_name_eq(bus->parent, bus_connection)) {
printk(KERN_ERR "%s: Error, parent is not %s.\n", printk(KERN_ERR "%pOF: Error, parent is not %s.\n",
bus->full_name, bus_connection); bus, bus_connection);
goto err_out; goto err_out;
} }
board_parent = bus->parent; board_parent = bus->parent;
board = of_getintprop_default(board_parent, "board#", -1); board = of_getintprop_default(board_parent, "board#", -1);
if (board == -1) { if (board == -1) {
printk(KERN_ERR "%s: Error, lacks board# property.\n", printk(KERN_ERR "%pOF: Error, lacks board# property.\n",
board_parent->full_name); board_parent);
goto err_out; goto err_out;
} }

View File

@ -0,0 +1,55 @@
# SPDX-License-Identifier: GPL-2.0
kapi := arch/$(SRCARCH)/include/generated/asm
uapi := arch/$(SRCARCH)/include/generated/uapi/asm
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
syscall := $(srctree)/$(src)/syscall.tbl
syshdr := $(srctree)/$(src)/syscallhdr.sh
systbl := $(srctree)/$(src)/syscalltbl.sh
quiet_cmd_syshdr = SYSHDR $@
cmd_syshdr = $(CONFIG_SHELL) '$(syshdr)' '$<' '$@' \
'$(syshdr_abis_$(basetarget))' \
'$(syshdr_pfx_$(basetarget))' \
'$(syshdr_offset_$(basetarget))'
quiet_cmd_systbl = SYSTBL $@
cmd_systbl = $(CONFIG_SHELL) '$(systbl)' '$<' '$@' \
'$(systbl_abis_$(basetarget))' \
'$(systbl_abi_$(basetarget))' \
'$(systbl_offset_$(basetarget))'
syshdr_abis_unistd_32 := common,32
$(uapi)/unistd_32.h: $(syscall) $(syshdr)
$(call if_changed,syshdr)
syshdr_abis_unistd_64 := common,64
$(uapi)/unistd_64.h: $(syscall) $(syshdr)
$(call if_changed,syshdr)
systbl_abis_syscall_table_32 := common,32
$(kapi)/syscall_table_32.h: $(syscall) $(systbl)
$(call if_changed,systbl)
systbl_abis_syscall_table_64 := common,64
$(kapi)/syscall_table_64.h: $(syscall) $(systbl)
$(call if_changed,systbl)
systbl_abis_syscall_table_c32 := common,32
systbl_abi_syscall_table_c32 := c32
$(kapi)/syscall_table_c32.h: $(syscall) $(systbl)
$(call if_changed,systbl)
uapisyshdr-y += unistd_32.h unistd_64.h
kapisyshdr-y += syscall_table_32.h \
syscall_table_64.h \
syscall_table_c32.h
targets += $(uapisyshdr-y) $(kapisyshdr-y)
PHONY += all
all: $(addprefix $(uapi)/,$(uapisyshdr-y))
all: $(addprefix $(kapi)/,$(kapisyshdr-y))
@:

View File

@ -0,0 +1,409 @@
# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
#
# system call numbers and entry vectors for sparc
#
# The format is:
# <number> <abi> <name> <entry point> <compat entry point>
#
# The <abi> can be common, 64, or 32 for this file.
#
0 common restart_syscall sys_restart_syscall
1 32 exit sys_exit sparc_exit
1 64 exit sparc_exit
2 common fork sys_fork
3 common read sys_read
4 common write sys_write
5 common open sys_open compat_sys_open
6 common close sys_close
7 common wait4 sys_wait4 compat_sys_wait4
8 common creat sys_creat
9 common link sys_link
10 common unlink sys_unlink
11 32 execv sunos_execv
11 64 execv sys_nis_syscall
12 common chdir sys_chdir
13 32 chown sys_chown16
13 64 chown sys_chown
14 common mknod sys_mknod
15 common chmod sys_chmod
16 32 lchown sys_lchown16
16 64 lchown sys_lchown
17 common brk sys_brk
18 common perfctr sys_nis_syscall
19 common lseek sys_lseek compat_sys_lseek
20 common getpid sys_getpid
21 common capget sys_capget
22 common capset sys_capset
23 32 setuid sys_setuid16
23 64 setuid sys_setuid
24 32 getuid sys_getuid16
24 64 getuid sys_getuid
25 common vmsplice sys_vmsplice compat_sys_vmsplice
26 common ptrace sys_ptrace compat_sys_ptrace
27 common alarm sys_alarm
28 common sigaltstack sys_sigaltstack compat_sys_sigaltstack
29 32 pause sys_pause
29 64 pause sys_nis_syscall
30 common utime sys_utime compat_sys_utime
31 32 lchown32 sys_lchown
32 32 fchown32 sys_fchown
33 common access sys_access
34 common nice sys_nice
35 32 chown32 sys_chown
36 common sync sys_sync
37 common kill sys_kill
38 common stat sys_newstat compat_sys_newstat
39 32 sendfile sys_sendfile compat_sys_sendfile
39 64 sendfile sys_sendfile64
40 common lstat sys_newlstat compat_sys_newlstat
41 common dup sys_dup
42 common pipe sys_sparc_pipe
43 common times sys_times compat_sys_times
44 32 getuid32 sys_getuid
45 common umount2 sys_umount
46 32 setgid sys_setgid16
46 64 setgid sys_setgid
47 32 getgid sys_getgid16
47 64 getgid sys_getgid
48 common signal sys_signal
49 32 geteuid sys_geteuid16
49 64 geteuid sys_geteuid
50 32 getegid sys_getegid16
50 64 getegid sys_getegid
51 common acct sys_acct
52 64 memory_ordering sys_memory_ordering
53 32 getgid32 sys_getgid
54 common ioctl sys_ioctl compat_sys_ioctl
55 common reboot sys_reboot
56 32 mmap2 sys_mmap2 sys32_mmap2
57 common symlink sys_symlink
58 common readlink sys_readlink
59 32 execve sys_execve sys32_execve
59 64 execve sys64_execve
60 common umask sys_umask
61 common chroot sys_chroot
62 common fstat sys_newfstat compat_sys_newfstat
63 common fstat64 sys_fstat64 compat_sys_fstat64
64 common getpagesize sys_getpagesize
65 common msync sys_msync
66 common vfork sys_vfork
67 common pread64 sys_pread64 compat_sys_pread64
68 common pwrite64 sys_pwrite64 compat_sys_pwrite64
69 32 geteuid32 sys_geteuid
70 32 getegid32 sys_getegid
71 common mmap sys_mmap
72 32 setreuid32 sys_setreuid
73 32 munmap sys_munmap
73 64 munmap sys_64_munmap
74 common mprotect sys_mprotect
75 common madvise sys_madvise
76 common vhangup sys_vhangup
77 32 truncate64 sys_truncate64 compat_sys_truncate64
78 common mincore sys_mincore
79 32 getgroups sys_getgroups16
79 64 getgroups sys_getgroups
80 32 setgroups sys_setgroups16
80 64 setgroups sys_setgroups
81 common getpgrp sys_getpgrp
82 32 setgroups32 sys_setgroups
83 common setitimer sys_setitimer compat_sys_setitimer
84 32 ftruncate64 sys_ftruncate64 compat_sys_ftruncate64
85 common swapon sys_swapon
86 common getitimer sys_getitimer compat_sys_getitimer
87 32 setuid32 sys_setuid
88 common sethostname sys_sethostname
89 32 setgid32 sys_setgid
90 common dup2 sys_dup2
91 32 setfsuid32 sys_setfsuid
92 common fcntl sys_fcntl compat_sys_fcntl
93 common select sys_select
94 32 setfsgid32 sys_setfsgid
95 common fsync sys_fsync
96 common setpriority sys_setpriority
97 common socket sys_socket
98 common connect sys_connect
99 common accept sys_accept
100 common getpriority sys_getpriority
101 common rt_sigreturn sys_rt_sigreturn sys32_rt_sigreturn
102 common rt_sigaction sys_rt_sigaction compat_sys_rt_sigaction
103 common rt_sigprocmask sys_rt_sigprocmask compat_sys_rt_sigprocmask
104 common rt_sigpending sys_rt_sigpending compat_sys_rt_sigpending
105 common rt_sigtimedwait sys_rt_sigtimedwait compat_sys_rt_sigtimedwait
106 common rt_sigqueueinfo sys_rt_sigqueueinfo compat_sys_rt_sigqueueinfo
107 common rt_sigsuspend sys_rt_sigsuspend compat_sys_rt_sigsuspend
108 32 setresuid32 sys_setresuid
108 64 setresuid sys_setresuid
109 32 getresuid32 sys_getresuid
109 64 getresuid sys_getresuid
110 32 setresgid32 sys_setresgid
110 64 setresgid sys_setresgid
111 32 getresgid32 sys_getresgid
111 64 getresgid sys_getresgid
112 32 setregid32 sys_setregid
113 common recvmsg sys_recvmsg compat_sys_recvmsg
114 common sendmsg sys_sendmsg compat_sys_sendmsg
115 32 getgroups32 sys_getgroups
116 common gettimeofday sys_gettimeofday compat_sys_gettimeofday
117 common getrusage sys_getrusage compat_sys_getrusage
118 common getsockopt sys_getsockopt compat_sys_getsockopt
119 common getcwd sys_getcwd
120 common readv sys_readv compat_sys_readv
121 common writev sys_writev compat_sys_writev
122 common settimeofday sys_settimeofday compat_sys_settimeofday
123 32 fchown sys_fchown16
123 64 fchown sys_fchown
124 common fchmod sys_fchmod
125 common recvfrom sys_recvfrom
126 32 setreuid sys_setreuid16
126 64 setreuid sys_setreuid
127 32 setregid sys_setregid16
127 64 setregid sys_setregid
128 common rename sys_rename
129 common truncate sys_truncate compat_sys_truncate
130 common ftruncate sys_ftruncate compat_sys_ftruncate
131 common flock sys_flock
132 common lstat64 sys_lstat64 compat_sys_lstat64
133 common sendto sys_sendto
134 common shutdown sys_shutdown
135 common socketpair sys_socketpair
136 common mkdir sys_mkdir
137 common rmdir sys_rmdir
138 common utimes sys_utimes compat_sys_utimes
139 common stat64 sys_stat64 compat_sys_stat64
140 common sendfile64 sys_sendfile64
141 common getpeername sys_getpeername
142 common futex sys_futex compat_sys_futex
143 common gettid sys_gettid
144 common getrlimit sys_getrlimit compat_sys_getrlimit
145 common setrlimit sys_setrlimit compat_sys_setrlimit
146 common pivot_root sys_pivot_root
147 common prctl sys_prctl
148 common pciconfig_read sys_pciconfig_read
149 common pciconfig_write sys_pciconfig_write
150 common getsockname sys_getsockname
151 common inotify_init sys_inotify_init
152 common inotify_add_watch sys_inotify_add_watch
153 common poll sys_poll
154 common getdents64 sys_getdents64
155 32 fcntl64 sys_fcntl64 compat_sys_fcntl64
156 common inotify_rm_watch sys_inotify_rm_watch
157 common statfs sys_statfs compat_sys_statfs
158 common fstatfs sys_fstatfs compat_sys_fstatfs
159 common umount sys_oldumount
160 common sched_set_affinity sys_sched_setaffinity compat_sys_sched_setaffinity
161 common sched_get_affinity sys_sched_getaffinity compat_sys_sched_getaffinity
162 common getdomainname sys_getdomainname
163 common setdomainname sys_setdomainname
164 64 utrap_install sys_utrap_install
165 common quotactl sys_quotactl
166 common set_tid_address sys_set_tid_address
167 common mount sys_mount compat_sys_mount
168 common ustat sys_ustat compat_sys_ustat
169 common setxattr sys_setxattr
170 common lsetxattr sys_lsetxattr
171 common fsetxattr sys_fsetxattr
172 common getxattr sys_getxattr
173 common lgetxattr sys_lgetxattr
174 common getdents sys_getdents compat_sys_getdents
175 common setsid sys_setsid
176 common fchdir sys_fchdir
177 common fgetxattr sys_fgetxattr
178 common listxattr sys_listxattr
179 common llistxattr sys_llistxattr
180 common flistxattr sys_flistxattr
181 common removexattr sys_removexattr
182 common lremovexattr sys_lremovexattr
183 32 sigpending sys_sigpending compat_sys_sigpending
183 64 sigpending sys_nis_syscall
184 common query_module sys_ni_syscall
185 common setpgid sys_setpgid
186 common fremovexattr sys_fremovexattr
187 common tkill sys_tkill
188 32 exit_group sys_exit_group sparc_exit_group
188 64 exit_group sparc_exit_group
189 common uname sys_newuname
190 common init_module sys_init_module
191 32 personality sys_personality sys_sparc64_personality
191 64 personality sys_sparc64_personality
192 32 remap_file_pages sys_sparc_remap_file_pages sys_remap_file_pages
192 64 remap_file_pages sys_remap_file_pages
193 common epoll_create sys_epoll_create
194 common epoll_ctl sys_epoll_ctl
195 common epoll_wait sys_epoll_wait
196 common ioprio_set sys_ioprio_set
197 common getppid sys_getppid
198 32 sigaction sys_sparc_sigaction compat_sys_sparc_sigaction
198 64 sigaction sys_nis_syscall
199 common sgetmask sys_sgetmask
200 common ssetmask sys_ssetmask
201 32 sigsuspend sys_sigsuspend
201 64 sigsuspend sys_nis_syscall
202 common oldlstat sys_newlstat compat_sys_newlstat
203 common uselib sys_uselib
204 32 readdir sys_old_readdir compat_sys_old_readdir
204 64 readdir sys_nis_syscall
205 common readahead sys_readahead compat_sys_readahead
206 common socketcall sys_socketcall sys32_socketcall
207 common syslog sys_syslog
208 common lookup_dcookie sys_lookup_dcookie compat_sys_lookup_dcookie
209 common fadvise64 sys_fadvise64 compat_sys_fadvise64
210 common fadvise64_64 sys_fadvise64_64 compat_sys_fadvise64_64
211 common tgkill sys_tgkill
212 common waitpid sys_waitpid
213 common swapoff sys_swapoff
214 common sysinfo sys_sysinfo compat_sys_sysinfo
215 32 ipc sys_ipc compat_sys_ipc
215 64 ipc sys_sparc_ipc
216 32 sigreturn sys_sigreturn sys32_sigreturn
216 64 sigreturn sys_nis_syscall
217 common clone sys_clone
218 common ioprio_get sys_ioprio_get
219 common adjtimex sys_adjtimex compat_sys_adjtimex
220 32 sigprocmask sys_sigprocmask compat_sys_sigprocmask
220 64 sigprocmask sys_nis_syscall
221 common create_module sys_ni_syscall
222 common delete_module sys_delete_module
223 common get_kernel_syms sys_ni_syscall
224 common getpgid sys_getpgid
225 common bdflush sys_bdflush
226 common sysfs sys_sysfs
227 common afs_syscall sys_nis_syscall
228 common setfsuid sys_setfsuid16
229 common setfsgid sys_setfsgid16
230 common _newselect sys_select compat_sys_select
231 32 time sys_time compat_sys_time
232 common splice sys_splice
233 common stime sys_stime compat_sys_stime
234 common statfs64 sys_statfs64 compat_sys_statfs64
235 common fstatfs64 sys_fstatfs64 compat_sys_fstatfs64
236 common _llseek sys_llseek
237 common mlock sys_mlock
238 common munlock sys_munlock
239 common mlockall sys_mlockall
240 common munlockall sys_munlockall
241 common sched_setparam sys_sched_setparam
242 common sched_getparam sys_sched_getparam
243 common sched_setscheduler sys_sched_setscheduler
244 common sched_getscheduler sys_sched_getscheduler
245 common sched_yield sys_sched_yield
246 common sched_get_priority_max sys_sched_get_priority_max
247 common sched_get_priority_min sys_sched_get_priority_min
248 common sched_rr_get_interval sys_sched_rr_get_interval compat_sys_sched_rr_get_interval
249 common nanosleep sys_nanosleep compat_sys_nanosleep
250 32 mremap sys_mremap
250 64 mremap sys_64_mremap
251 common _sysctl sys_sysctl compat_sys_sysctl
252 common getsid sys_getsid
253 common fdatasync sys_fdatasync
254 32 nfsservctl sys_ni_syscall sys_nis_syscall
254 64 nfsservctl sys_nis_syscall
255 common sync_file_range sys_sync_file_range compat_sys_sync_file_range
256 common clock_settime sys_clock_settime compat_sys_clock_settime
257 common clock_gettime sys_clock_gettime compat_sys_clock_gettime
258 common clock_getres sys_clock_getres compat_sys_clock_getres
259 common clock_nanosleep sys_clock_nanosleep compat_sys_clock_nanosleep
260 common sched_getaffinity sys_sched_getaffinity compat_sys_sched_getaffinity
261 common sched_setaffinity sys_sched_setaffinity compat_sys_sched_setaffinity
262 common timer_settime sys_timer_settime compat_sys_timer_settime
263 common timer_gettime sys_timer_gettime compat_sys_timer_gettime
264 common timer_getoverrun sys_timer_getoverrun
265 common timer_delete sys_timer_delete
266 common timer_create sys_timer_create compat_sys_timer_create
# 267 was vserver
267 common vserver sys_nis_syscall
268 common io_setup sys_io_setup compat_sys_io_setup
269 common io_destroy sys_io_destroy
270 common io_submit sys_io_submit compat_sys_io_submit
271 common io_cancel sys_io_cancel
272 common io_getevents sys_io_getevents compat_sys_io_getevents
273 common mq_open sys_mq_open compat_sys_mq_open
274 common mq_unlink sys_mq_unlink
275 common mq_timedsend sys_mq_timedsend compat_sys_mq_timedsend
276 common mq_timedreceive sys_mq_timedreceive compat_sys_mq_timedreceive
277 common mq_notify sys_mq_notify compat_sys_mq_notify
278 common mq_getsetattr sys_mq_getsetattr compat_sys_mq_getsetattr
279 common waitid sys_waitid compat_sys_waitid
280 common tee sys_tee
281 common add_key sys_add_key
282 common request_key sys_request_key
283 common keyctl sys_keyctl compat_sys_keyctl
284 common openat sys_openat compat_sys_openat
285 common mkdirat sys_mkdirat
286 common mknodat sys_mknodat
287 common fchownat sys_fchownat
288 common futimesat sys_futimesat compat_sys_futimesat
289 common fstatat64 sys_fstatat64 compat_sys_fstatat64
290 common unlinkat sys_unlinkat
291 common renameat sys_renameat
292 common linkat sys_linkat
293 common symlinkat sys_symlinkat
294 common readlinkat sys_readlinkat
295 common fchmodat sys_fchmodat
296 common faccessat sys_faccessat
297 common pselect6 sys_pselect6 compat_sys_pselect6
298 common ppoll sys_ppoll compat_sys_ppoll
299 common unshare sys_unshare
300 common set_robust_list sys_set_robust_list compat_sys_set_robust_list
301 common get_robust_list sys_get_robust_list compat_sys_get_robust_list
302 common migrate_pages sys_migrate_pages compat_sys_migrate_pages
303 common mbind sys_mbind compat_sys_mbind
304 common get_mempolicy sys_get_mempolicy compat_sys_get_mempolicy
305 common set_mempolicy sys_set_mempolicy compat_sys_set_mempolicy
306 common kexec_load sys_kexec_load compat_sys_kexec_load
307 common move_pages sys_move_pages compat_sys_move_pages
308 common getcpu sys_getcpu
309 common epoll_pwait sys_epoll_pwait compat_sys_epoll_pwait
310 common utimensat sys_utimensat compat_sys_utimensat
311 common signalfd sys_signalfd compat_sys_signalfd
312 common timerfd_create sys_timerfd_create
313 common eventfd sys_eventfd
314 common fallocate sys_fallocate compat_sys_fallocate
315 common timerfd_settime sys_timerfd_settime compat_sys_timerfd_settime
316 common timerfd_gettime sys_timerfd_gettime compat_sys_timerfd_gettime
317 common signalfd4 sys_signalfd4 compat_sys_signalfd4
318 common eventfd2 sys_eventfd2
319 common epoll_create1 sys_epoll_create1
320 common dup3 sys_dup3
321 common pipe2 sys_pipe2
322 common inotify_init1 sys_inotify_init1
323 common accept4 sys_accept4
324 common preadv sys_preadv compat_sys_preadv
325 common pwritev sys_pwritev compat_sys_pwritev
326 common rt_tgsigqueueinfo sys_rt_tgsigqueueinfo compat_sys_rt_tgsigqueueinfo
327 common perf_event_open sys_perf_event_open
328 common recvmmsg sys_recvmmsg compat_sys_recvmmsg
329 common fanotify_init sys_fanotify_init
330 common fanotify_mark sys_fanotify_mark compat_sys_fanotify_mark
331 common prlimit64 sys_prlimit64
332 common name_to_handle_at sys_name_to_handle_at
333 common open_by_handle_at sys_open_by_handle_at compat_sys_open_by_handle_at
334 common clock_adjtime sys_clock_adjtime compat_sys_clock_adjtime
335 common syncfs sys_syncfs
336 common sendmmsg sys_sendmmsg compat_sys_sendmmsg
337 common setns sys_setns
338 common process_vm_readv sys_process_vm_readv compat_sys_process_vm_readv
339 common process_vm_writev sys_process_vm_writev compat_sys_process_vm_writev
340 32 kern_features sys_ni_syscall sys_kern_features
340 64 kern_features sys_kern_features
341 common kcmp sys_kcmp
342 common finit_module sys_finit_module
343 common sched_setattr sys_sched_setattr
344 common sched_getattr sys_sched_getattr
345 common renameat2 sys_renameat2
346 common seccomp sys_seccomp
347 common getrandom sys_getrandom
348 common memfd_create sys_memfd_create
349 common bpf sys_bpf
350 32 execveat sys_execveat sys32_execveat
350 64 execveat sys64_execveat
351 common membarrier sys_membarrier
352 common userfaultfd sys_userfaultfd
353 common bind sys_bind
354 common listen sys_listen
355 common setsockopt sys_setsockopt compat_sys_setsockopt
356 common mlock2 sys_mlock2
357 common copy_file_range sys_copy_file_range
358 common preadv2 sys_preadv2 compat_sys_preadv2
359 common pwritev2 sys_pwritev2 compat_sys_pwritev2
360 common statx sys_statx
361 common io_pgetevents sys_io_pgetevents compat_sys_io_pgetevents

View File

@ -0,0 +1,36 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
in="$1"
out="$2"
my_abis=`echo "($3)" | tr ',' '|'`
prefix="$4"
offset="$5"
fileguard=_UAPI_ASM_SPARC_`basename "$out" | sed \
-e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
-e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g'`
grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
printf "#ifndef %s\n" "${fileguard}"
printf "#define %s\n" "${fileguard}"
printf "\n"
nxt=0
while read nr abi name entry compat ; do
if [ -z "$offset" ]; then
printf "#define __NR_%s%s\t%s\n" \
"${prefix}" "${name}" "${nr}"
else
printf "#define __NR_%s%s\t(%s + %s)\n" \
"${prefix}" "${name}" "${offset}" "${nr}"
fi
nxt=$((nr+1))
done
printf "\n"
printf "#ifdef __KERNEL__\n"
printf "#define __NR_syscalls\t%s\n" "${nxt}"
printf "#endif\n"
printf "\n"
printf "#endif /* %s */" "${fileguard}"
) > "$out"

View File

@ -0,0 +1,36 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
in="$1"
out="$2"
my_abis=`echo "($3)" | tr ',' '|'`
my_abi="$4"
offset="$5"
emit() {
t_nxt="$1"
t_nr="$2"
t_entry="$3"
while [ $t_nxt -lt $t_nr ]; do
printf "__SYSCALL(%s, sys_nis_syscall, )\n" "${t_nxt}"
t_nxt=$((t_nxt+1))
done
printf "__SYSCALL(%s, %s, )\n" "${t_nxt}" "${t_entry}"
}
grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
nxt=0
if [ -z "$offset" ]; then
offset=0
fi
while read nr abi name entry compat ; do
if [ "$my_abi" = "c32" ] && [ ! -z "$compat" ]; then
emit $((nxt+offset)) $((nr+offset)) $compat
else
emit $((nxt+offset)) $((nr+offset)) $entry
fi
nxt=$((nr+1))
done
) > "$out"

View File

@ -9,85 +9,10 @@
* Copyright (C) 1995 Adrian M. Rodriguez (adrian@remus.rutgers.edu) * Copyright (C) 1995 Adrian M. Rodriguez (adrian@remus.rutgers.edu)
*/ */
#define __SYSCALL(nr, entry, nargs) .long entry
.data .data
.align 4 .align 4
/* First, the Linux native syscall table. */
.globl sys_call_table .globl sys_call_table
sys_call_table: sys_call_table:
/*0*/ .long sys_restart_syscall, sys_exit, sys_fork, sys_read, sys_write #include <asm/syscall_table_32.h> /* 32-bit native syscalls */
/*5*/ .long sys_open, sys_close, sys_wait4, sys_creat, sys_link #undef __SYSCALL
/*10*/ .long sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys_mknod
/*15*/ .long sys_chmod, sys_lchown16, sys_brk, sys_nis_syscall, sys_lseek
/*20*/ .long sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16
/*25*/ .long sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_pause
/*30*/ .long sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice
/*35*/ .long sys_chown, sys_sync, sys_kill, sys_newstat, sys_sendfile
/*40*/ .long sys_newlstat, sys_dup, sys_sparc_pipe, sys_times, sys_getuid
/*45*/ .long sys_umount, sys_setgid16, sys_getgid16, sys_signal, sys_geteuid16
/*50*/ .long sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, sys_ioctl
/*55*/ .long sys_reboot, sys_mmap2, sys_symlink, sys_readlink, sys_execve
/*60*/ .long sys_umask, sys_chroot, sys_newfstat, sys_fstat64, sys_getpagesize
/*65*/ .long sys_msync, sys_vfork, sys_pread64, sys_pwrite64, sys_geteuid
/*70*/ .long sys_getegid, sys_mmap, sys_setreuid, sys_munmap, sys_mprotect
/*75*/ .long sys_madvise, sys_vhangup, sys_truncate64, sys_mincore, sys_getgroups16
/*80*/ .long sys_setgroups16, sys_getpgrp, sys_setgroups, sys_setitimer, sys_ftruncate64
/*85*/ .long sys_swapon, sys_getitimer, sys_setuid, sys_sethostname, sys_setgid
/*90*/ .long sys_dup2, sys_setfsuid, sys_fcntl, sys_select, sys_setfsgid
/*95*/ .long sys_fsync, sys_setpriority, sys_socket, sys_connect, sys_accept
/*100*/ .long sys_getpriority, sys_rt_sigreturn, sys_rt_sigaction, sys_rt_sigprocmask, sys_rt_sigpending
/*105*/ .long sys_rt_sigtimedwait, sys_rt_sigqueueinfo, sys_rt_sigsuspend, sys_setresuid, sys_getresuid
/*110*/ .long sys_setresgid, sys_getresgid, sys_setregid, sys_recvmsg, sys_sendmsg
/*115*/ .long sys_getgroups, sys_gettimeofday, sys_getrusage, sys_getsockopt, sys_getcwd
/*120*/ .long sys_readv, sys_writev, sys_settimeofday, sys_fchown16, sys_fchmod
/*125*/ .long sys_recvfrom, sys_setreuid16, sys_setregid16, sys_rename, sys_truncate
/*130*/ .long sys_ftruncate, sys_flock, sys_lstat64, sys_sendto, sys_shutdown
/*135*/ .long sys_socketpair, sys_mkdir, sys_rmdir, sys_utimes, sys_stat64
/*140*/ .long sys_sendfile64, sys_getpeername, sys_futex, sys_gettid, sys_getrlimit
/*145*/ .long sys_setrlimit, sys_pivot_root, sys_prctl, sys_pciconfig_read, sys_pciconfig_write
/*150*/ .long sys_getsockname, sys_inotify_init, sys_inotify_add_watch, sys_poll, sys_getdents64
/*155*/ .long sys_fcntl64, sys_inotify_rm_watch, sys_statfs, sys_fstatfs, sys_oldumount
/*160*/ .long sys_sched_setaffinity, sys_sched_getaffinity, sys_getdomainname, sys_setdomainname, sys_nis_syscall
/*165*/ .long sys_quotactl, sys_set_tid_address, sys_mount, sys_ustat, sys_setxattr
/*170*/ .long sys_lsetxattr, sys_fsetxattr, sys_getxattr, sys_lgetxattr, sys_getdents
/*175*/ .long sys_setsid, sys_fchdir, sys_fgetxattr, sys_listxattr, sys_llistxattr
/*180*/ .long sys_flistxattr, sys_removexattr, sys_lremovexattr, sys_sigpending, sys_ni_syscall
/*185*/ .long sys_setpgid, sys_fremovexattr, sys_tkill, sys_exit_group, sys_newuname
/*190*/ .long sys_init_module, sys_personality, sys_sparc_remap_file_pages, sys_epoll_create, sys_epoll_ctl
/*195*/ .long sys_epoll_wait, sys_ioprio_set, sys_getppid, sys_sparc_sigaction, sys_sgetmask
/*200*/ .long sys_ssetmask, sys_sigsuspend, sys_newlstat, sys_uselib, sys_old_readdir
/*205*/ .long sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64
/*210*/ .long sys_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, sys_sysinfo
/*215*/ .long sys_ipc, sys_sigreturn, sys_clone, sys_ioprio_get, sys_adjtimex
/*220*/ .long sys_sigprocmask, sys_ni_syscall, sys_delete_module, sys_ni_syscall, sys_getpgid
/*225*/ .long sys_bdflush, sys_sysfs, sys_nis_syscall, sys_setfsuid16, sys_setfsgid16
/*230*/ .long sys_select, sys_time, sys_splice, sys_stime, sys_statfs64
/* "We are the Knights of the Forest of Ni!!" */
/*235*/ .long sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall
/*240*/ .long sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler
/*245*/ .long sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep
/*250*/ .long sys_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_ni_syscall
/*255*/ .long sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
/*260*/ .long sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun
/*265*/ .long sys_timer_delete, sys_timer_create, sys_nis_syscall, sys_io_setup, sys_io_destroy
/*270*/ .long sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink
/*275*/ .long sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid
/*280*/ .long sys_tee, sys_add_key, sys_request_key, sys_keyctl, sys_openat
/*285*/ .long sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64
/*290*/ .long sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat
/*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare
/*300*/ .long sys_set_robust_list, sys_get_robust_list, sys_migrate_pages, sys_mbind, sys_get_mempolicy
/*305*/ .long sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait
/*310*/ .long sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate
/*315*/ .long sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1
/*320*/ .long sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv
/*325*/ .long sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init
/*330*/ .long sys_fanotify_mark, sys_prlimit64, sys_name_to_handle_at, sys_open_by_handle_at, sys_clock_adjtime
/*335*/ .long sys_syncfs, sys_sendmmsg, sys_setns, sys_process_vm_readv, sys_process_vm_writev
/*340*/ .long sys_ni_syscall, sys_kcmp, sys_finit_module, sys_sched_setattr, sys_sched_getattr
/*345*/ .long sys_renameat2, sys_seccomp, sys_getrandom, sys_memfd_create, sys_bpf
/*350*/ .long sys_execveat, sys_membarrier, sys_userfaultfd, sys_bind, sys_listen
/*355*/ .long sys_setsockopt, sys_mlock2, sys_copy_file_range, sys_preadv2, sys_pwritev2
/*360*/ .long sys_statx, sys_io_pgetevents

View File

@ -10,167 +10,18 @@
* Copyright (C) 1995 Adrian M. Rodriguez (adrian@remus.rutgers.edu) * Copyright (C) 1995 Adrian M. Rodriguez (adrian@remus.rutgers.edu)
*/ */
#define __SYSCALL(nr, entry, nargs) .word entry
.text .text
.align 4 .align 4
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
/* First, the 32-bit Linux native syscall table. */
.globl sys_call_table32 .globl sys_call_table32
sys_call_table32: sys_call_table32:
/*0*/ .word sys_restart_syscall, sparc_exit, sys_fork, sys_read, sys_write #include <asm/syscall_table_c32.h> /* Compat syscalls */
/*5*/ .word compat_sys_open, sys_close, compat_sys_wait4, sys_creat, sys_link
/*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys_mknod
/*15*/ .word sys_chmod, sys_lchown16, sys_brk, sys_nis_syscall, compat_sys_lseek
/*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16
/*25*/ .word compat_sys_vmsplice, compat_sys_ptrace, sys_alarm, compat_sys_sigaltstack, sys_pause
/*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice
.word sys_chown, sys_sync, sys_kill, compat_sys_newstat, compat_sys_sendfile
/*40*/ .word compat_sys_newlstat, sys_dup, sys_sparc_pipe, compat_sys_times, sys_getuid
.word sys_umount, sys_setgid16, sys_getgid16, sys_signal, sys_geteuid16
/*50*/ .word sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, compat_sys_ioctl
.word sys_reboot, sys32_mmap2, sys_symlink, sys_readlink, sys32_execve
/*60*/ .word sys_umask, sys_chroot, compat_sys_newfstat, compat_sys_fstat64, sys_getpagesize
.word sys_msync, sys_vfork, compat_sys_pread64, compat_sys_pwrite64, sys_geteuid
/*70*/ .word sys_getegid, sys_mmap, sys_setreuid, sys_munmap, sys_mprotect
.word sys_madvise, sys_vhangup, compat_sys_truncate64, sys_mincore, sys_getgroups16
/*80*/ .word sys_setgroups16, sys_getpgrp, sys_setgroups, compat_sys_setitimer, compat_sys_ftruncate64
.word sys_swapon, compat_sys_getitimer, sys_setuid, sys_sethostname, sys_setgid
/*90*/ .word sys_dup2, sys_setfsuid, compat_sys_fcntl, compat_sys_select, sys_setfsgid
.word sys_fsync, sys_setpriority, sys_socket, sys_connect, sys_accept
/*100*/ .word sys_getpriority, sys32_rt_sigreturn, compat_sys_rt_sigaction, compat_sys_rt_sigprocmask, compat_sys_rt_sigpending
.word compat_sys_rt_sigtimedwait, compat_sys_rt_sigqueueinfo, compat_sys_rt_sigsuspend, sys_setresuid, sys_getresuid
/*110*/ .word sys_setresgid, sys_getresgid, sys_setregid, compat_sys_recvmsg, compat_sys_sendmsg
.word sys_getgroups, compat_sys_gettimeofday, compat_sys_getrusage, compat_sys_getsockopt, sys_getcwd
/*120*/ .word compat_sys_readv, compat_sys_writev, compat_sys_settimeofday, sys_fchown16, sys_fchmod
.word sys_recvfrom, sys_setreuid16, sys_setregid16, sys_rename, compat_sys_truncate
/*130*/ .word compat_sys_ftruncate, sys_flock, compat_sys_lstat64, sys_sendto, sys_shutdown
.word sys_socketpair, sys_mkdir, sys_rmdir, compat_sys_utimes, compat_sys_stat64
/*140*/ .word sys_sendfile64, sys_getpeername, compat_sys_futex, sys_gettid, compat_sys_getrlimit
.word compat_sys_setrlimit, sys_pivot_root, sys_prctl, sys_pciconfig_read, sys_pciconfig_write
/*150*/ .word sys_getsockname, sys_inotify_init, sys_inotify_add_watch, sys_poll, sys_getdents64
.word compat_sys_fcntl64, sys_inotify_rm_watch, compat_sys_statfs, compat_sys_fstatfs, sys_oldumount
/*160*/ .word compat_sys_sched_setaffinity, compat_sys_sched_getaffinity, sys_getdomainname, sys_setdomainname, sys_nis_syscall
.word sys_quotactl, sys_set_tid_address, compat_sys_mount, compat_sys_ustat, sys_setxattr
/*170*/ .word sys_lsetxattr, sys_fsetxattr, sys_getxattr, sys_lgetxattr, compat_sys_getdents
.word sys_setsid, sys_fchdir, sys_fgetxattr, sys_listxattr, sys_llistxattr
/*180*/ .word sys_flistxattr, sys_removexattr, sys_lremovexattr, compat_sys_sigpending, sys_ni_syscall
.word sys_setpgid, sys_fremovexattr, sys_tkill, sparc_exit_group, sys_newuname
/*190*/ .word sys_init_module, sys_sparc64_personality, sys_remap_file_pages, sys_epoll_create, sys_epoll_ctl
.word sys_epoll_wait, sys_ioprio_set, sys_getppid, compat_sys_sparc_sigaction, sys_sgetmask
/*200*/ .word sys_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir
.word compat_sys_readahead, sys32_socketcall, sys_syslog, compat_sys_lookup_dcookie, compat_sys_fadvise64
/*210*/ .word compat_sys_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, compat_sys_sysinfo
.word compat_sys_ipc, sys32_sigreturn, sys_clone, sys_ioprio_get, compat_sys_adjtimex
/*220*/ .word compat_sys_sigprocmask, sys_ni_syscall, sys_delete_module, sys_ni_syscall, sys_getpgid
.word sys_bdflush, sys_sysfs, sys_nis_syscall, sys_setfsuid16, sys_setfsgid16
/*230*/ .word compat_sys_select, compat_sys_time, sys_splice, compat_sys_stime, compat_sys_statfs64
.word compat_sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall
/*240*/ .word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler
.word sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, compat_sys_sched_rr_get_interval, compat_sys_nanosleep
/*250*/ .word sys_mremap, compat_sys_sysctl, sys_getsid, sys_fdatasync, sys_nis_syscall
.word compat_sys_sync_file_range, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, compat_sys_clock_nanosleep
/*260*/ .word compat_sys_sched_getaffinity, compat_sys_sched_setaffinity, compat_sys_timer_settime, compat_sys_timer_gettime, sys_timer_getoverrun
.word sys_timer_delete, compat_sys_timer_create, sys_ni_syscall, compat_sys_io_setup, sys_io_destroy
/*270*/ .word compat_sys_io_submit, sys_io_cancel, compat_sys_io_getevents, compat_sys_mq_open, sys_mq_unlink
.word compat_sys_mq_timedsend, compat_sys_mq_timedreceive, compat_sys_mq_notify, compat_sys_mq_getsetattr, compat_sys_waitid
/*280*/ .word sys_tee, sys_add_key, sys_request_key, compat_sys_keyctl, compat_sys_openat
.word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64
/*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat
.word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare
/*300*/ .word compat_sys_set_robust_list, compat_sys_get_robust_list, compat_sys_migrate_pages, compat_sys_mbind, compat_sys_get_mempolicy
.word compat_sys_set_mempolicy, compat_sys_kexec_load, compat_sys_move_pages, sys_getcpu, compat_sys_epoll_pwait
/*310*/ .word compat_sys_utimensat, compat_sys_signalfd, sys_timerfd_create, sys_eventfd, compat_sys_fallocate
.word compat_sys_timerfd_settime, compat_sys_timerfd_gettime, compat_sys_signalfd4, sys_eventfd2, sys_epoll_create1
/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, compat_sys_preadv
.word compat_sys_pwritev, compat_sys_rt_tgsigqueueinfo, sys_perf_event_open, compat_sys_recvmmsg, sys_fanotify_init
/*330*/ .word compat_sys_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, sys_kcmp, sys_finit_module, sys_sched_setattr, sys_sched_getattr
.word sys_renameat2, sys_seccomp, sys_getrandom, sys_memfd_create, sys_bpf
/*350*/ .word sys32_execveat, sys_membarrier, sys_userfaultfd, sys_bind, sys_listen
.word compat_sys_setsockopt, sys_mlock2, sys_copy_file_range, compat_sys_preadv2, compat_sys_pwritev2
/*360*/ .word sys_statx, compat_sys_io_pgetevents
#endif /* CONFIG_COMPAT */ #endif /* CONFIG_COMPAT */
/* Now the 64-bit native Linux syscall table. */
.align 4 .align 4
.globl sys_call_table64, sys_call_table .globl sys_call_table64, sys_call_table
sys_call_table64: sys_call_table64:
sys_call_table: sys_call_table:
/*0*/ .word sys_restart_syscall, sparc_exit, sys_fork, sys_read, sys_write #include <asm/syscall_table_64.h> /* 64-bit native syscalls */
/*5*/ .word sys_open, sys_close, sys_wait4, sys_creat, sys_link #undef __SYSCALL
/*10*/ .word sys_unlink, sys_nis_syscall, sys_chdir, sys_chown, sys_mknod
/*15*/ .word sys_chmod, sys_lchown, sys_brk, sys_nis_syscall, sys_lseek
/*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid, sys_getuid
/*25*/ .word sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_nis_syscall
/*30*/ .word sys_utime, sys_nis_syscall, sys_nis_syscall, sys_access, sys_nice
.word sys_nis_syscall, sys_sync, sys_kill, sys_newstat, sys_sendfile64
/*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, 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_madvise, sys_vhangup, sys_nis_syscall, sys_mincore, sys_getgroups
/*80*/ .word sys_setgroups, sys_getpgrp, sys_nis_syscall, sys_setitimer, sys_nis_syscall
.word sys_swapon, sys_getitimer, sys_nis_syscall, sys_sethostname, sys_nis_syscall
/*90*/ .word sys_dup2, sys_nis_syscall, sys_fcntl, sys_select, sys_nis_syscall
.word sys_fsync, sys_setpriority, sys_socket, sys_connect, sys_accept
/*100*/ .word sys_getpriority, sys_rt_sigreturn, sys_rt_sigaction, sys_rt_sigprocmask, sys_rt_sigpending
.word sys_rt_sigtimedwait, sys_rt_sigqueueinfo, sys_rt_sigsuspend, sys_setresuid, sys_getresuid
/*110*/ .word sys_setresgid, sys_getresgid, sys_nis_syscall, sys_recvmsg, sys_sendmsg
.word sys_nis_syscall, sys_gettimeofday, sys_getrusage, sys_getsockopt, sys_getcwd
/*120*/ .word sys_readv, sys_writev, sys_settimeofday, sys_fchown, sys_fchmod
.word sys_recvfrom, sys_setreuid, sys_setregid, sys_rename, sys_truncate
/*130*/ .word sys_ftruncate, sys_flock, sys_lstat64, sys_sendto, sys_shutdown
.word sys_socketpair, sys_mkdir, sys_rmdir, sys_utimes, sys_stat64
/*140*/ .word sys_sendfile64, sys_getpeername, sys_futex, sys_gettid, sys_getrlimit
.word sys_setrlimit, sys_pivot_root, sys_prctl, sys_pciconfig_read, sys_pciconfig_write
/*150*/ .word sys_getsockname, sys_inotify_init, sys_inotify_add_watch, sys_poll, sys_getdents64
.word sys_nis_syscall, sys_inotify_rm_watch, sys_statfs, sys_fstatfs, sys_oldumount
/*160*/ .word sys_sched_setaffinity, sys_sched_getaffinity, sys_getdomainname, sys_setdomainname, sys_utrap_install
.word sys_quotactl, sys_set_tid_address, sys_mount, sys_ustat, sys_setxattr
/*170*/ .word sys_lsetxattr, sys_fsetxattr, sys_getxattr, sys_lgetxattr, sys_getdents
.word sys_setsid, sys_fchdir, sys_fgetxattr, sys_listxattr, sys_llistxattr
/*180*/ .word sys_flistxattr, sys_removexattr, sys_lremovexattr, sys_nis_syscall, sys_ni_syscall
.word sys_setpgid, sys_fremovexattr, sys_tkill, sparc_exit_group, sys_newuname
/*190*/ .word sys_init_module, sys_sparc64_personality, sys_remap_file_pages, sys_epoll_create, sys_epoll_ctl
.word sys_epoll_wait, sys_ioprio_set, sys_getppid, sys_nis_syscall, sys_sgetmask
/*200*/ .word sys_ssetmask, sys_nis_syscall, sys_newlstat, sys_uselib, sys_nis_syscall
.word sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64
/*210*/ .word sys_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, sys_sysinfo
.word sys_sparc_ipc, sys_nis_syscall, sys_clone, sys_ioprio_get, sys_adjtimex
/*220*/ .word sys_nis_syscall, sys_ni_syscall, sys_delete_module, sys_ni_syscall, sys_getpgid
.word sys_bdflush, sys_sysfs, sys_nis_syscall, sys_setfsuid, sys_setfsgid
/*230*/ .word sys_select, sys_nis_syscall, sys_splice, sys_stime, sys_statfs64
.word sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall
/*240*/ .word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler
.word sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep
/*250*/ .word sys_64_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nis_syscall
.word sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
/*260*/ .word sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun
.word sys_timer_delete, sys_timer_create, sys_ni_syscall, sys_io_setup, sys_io_destroy
/*270*/ .word sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink
.word sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid
/*280*/ .word sys_tee, sys_add_key, sys_request_key, sys_keyctl, sys_openat
.word sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64
/*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat
.word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare
/*300*/ .word sys_set_robust_list, sys_get_robust_list, sys_migrate_pages, sys_mbind, sys_get_mempolicy
.word sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait
/*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate
.word sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1
/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv
.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, sys_kcmp, sys_finit_module, sys_sched_setattr, sys_sched_getattr
.word sys_renameat2, sys_seccomp, sys_getrandom, sys_memfd_create, sys_bpf
/*350*/ .word sys64_execveat, sys_membarrier, sys_userfaultfd, sys_bind, sys_listen
.word sys_setsockopt, sys_mlock2, sys_copy_file_range, sys_preadv2, sys_pwritev2
/*360*/ .word sys_statx, sys_io_pgetevents

View File

@ -445,8 +445,8 @@ static int rtc_probe(struct platform_device *op)
{ {
struct resource *r; struct resource *r;
printk(KERN_INFO "%s: RTC regs at 0x%llx\n", printk(KERN_INFO "%pOF: RTC regs at 0x%llx\n",
op->dev.of_node->full_name, op->resource[0].start); op->dev.of_node, op->resource[0].start);
/* The CMOS RTC driver only accepts IORESOURCE_IO, so cons /* The CMOS RTC driver only accepts IORESOURCE_IO, so cons
* up a fake resource so that the probe works for all cases. * up a fake resource so that the probe works for all cases.
@ -501,8 +501,8 @@ static struct platform_device rtc_bq4802_device = {
static int bq4802_probe(struct platform_device *op) static int bq4802_probe(struct platform_device *op)
{ {
printk(KERN_INFO "%s: BQ4802 regs at 0x%llx\n", printk(KERN_INFO "%pOF: BQ4802 regs at 0x%llx\n",
op->dev.of_node->full_name, op->resource[0].start); op->dev.of_node, op->resource[0].start);
rtc_bq4802_device.resource = &op->resource[0]; rtc_bq4802_device.resource = &op->resource[0];
return platform_device_register(&rtc_bq4802_device); return platform_device_register(&rtc_bq4802_device);
@ -561,12 +561,12 @@ static int mostek_probe(struct platform_device *op)
/* On an Enterprise system there can be multiple mostek clocks. /* On an Enterprise system there can be multiple mostek clocks.
* We should only match the one that is on the central FHC bus. * We should only match the one that is on the central FHC bus.
*/ */
if (!strcmp(dp->parent->name, "fhc") && if (of_node_name_eq(dp->parent, "fhc") &&
strcmp(dp->parent->parent->name, "central") != 0) !of_node_name_eq(dp->parent->parent, "central"))
return -ENODEV; return -ENODEV;
printk(KERN_INFO "%s: Mostek regs at 0x%llx\n", printk(KERN_INFO "%pOF: Mostek regs at 0x%llx\n",
dp->full_name, op->resource[0].start); dp, op->resource[0].start);
m48t59_rtc.resource = &op->resource[0]; m48t59_rtc.resource = &op->resource[0];
return platform_device_register(&m48t59_rtc); return platform_device_register(&m48t59_rtc);

View File

@ -193,7 +193,7 @@ show_pciobppath_attr(struct device *dev, struct device_attribute *attr,
vdev = to_vio_dev(dev); vdev = to_vio_dev(dev);
dp = vdev->dp; dp = vdev->dp;
return snprintf (buf, PAGE_SIZE, "%s\n", dp->full_name); return snprintf (buf, PAGE_SIZE, "%pOF\n", dp);
} }
static DEVICE_ATTR(obppath, S_IRUSR | S_IRGRP | S_IROTH, static DEVICE_ATTR(obppath, S_IRUSR | S_IRGRP | S_IROTH,
@ -366,12 +366,9 @@ static struct vio_dev *vio_create_one(struct mdesc_handle *hp, u64 mp,
if (parent == NULL) { if (parent == NULL) {
dp = cdev_node; dp = cdev_node;
} else if (to_vio_dev(parent) == root_vdev) { } else if (to_vio_dev(parent) == root_vdev) {
dp = of_get_next_child(cdev_node, NULL); for_each_child_of_node(cdev_node, dp) {
while (dp) { if (of_node_is_type(dp, type))
if (!strcmp(dp->type, type))
break; break;
dp = of_get_next_child(cdev_node, dp);
} }
} else { } else {
dp = to_vio_dev(parent)->dp; dp = to_vio_dev(parent)->dp;

View File

@ -32,24 +32,7 @@ unsigned int of_pdt_unique_id __initdata;
static char * __init of_pdt_build_full_name(struct device_node *dp) static char * __init of_pdt_build_full_name(struct device_node *dp)
{ {
int len, ourlen, plen; return build_path_component(dp);
char *n;
dp->path_component_name = build_path_component(dp);
plen = strlen(dp->parent->full_name);
ourlen = strlen(dp->path_component_name);
len = ourlen + plen + 2;
n = prom_early_alloc(len);
strcpy(n, dp->parent->full_name);
if (!of_node_is_root(dp->parent)) {
strcpy(n + plen, "/");
plen++;
}
strcpy(n + plen, dp->path_component_name);
return n;
} }
#else /* CONFIG_SPARC */ #else /* CONFIG_SPARC */
@ -60,23 +43,21 @@ static inline void irq_trans_init(struct device_node *dp) { }
static char * __init of_pdt_build_full_name(struct device_node *dp) static char * __init of_pdt_build_full_name(struct device_node *dp)
{ {
static int failsafe_id = 0; /* for generating unique names on failure */ static int failsafe_id = 0; /* for generating unique names on failure */
const char *name;
char path[256];
char *buf; char *buf;
int len; int len;
if (of_pdt_prom_ops->pkg2path(dp->phandle, NULL, 0, &len)) if (!of_pdt_prom_ops->pkg2path(dp->phandle, path, sizeof(path), &len)) {
goto failsafe; name = kbasename(path);
buf = prom_early_alloc(strlen(name) + 1);
buf = prom_early_alloc(len + 1); strcpy(buf, name);
if (of_pdt_prom_ops->pkg2path(dp->phandle, buf, len, &len))
goto failsafe;
return buf; return buf;
}
failsafe: name = of_get_property(dp, "name", &len);
buf = prom_early_alloc(strlen(dp->parent->full_name) + buf = prom_early_alloc(len + 16);
strlen(dp->name) + 16); sprintf(buf, "%s@unknown%i", name, failsafe_id++);
sprintf(buf, "%s/%s@unknown%i",
of_node_is_root(dp->parent) ? "" : dp->parent->full_name,
dp->name, failsafe_id++);
pr_err("%s: pkg2path failed; assigning %s\n", __func__, buf); pr_err("%s: pkg2path failed; assigning %s\n", __func__, buf);
return buf; return buf;
} }
@ -181,6 +162,8 @@ static struct device_node * __init of_pdt_create_node(phandle node,
dp->properties = of_pdt_build_prop_list(node); dp->properties = of_pdt_build_prop_list(node);
dp->full_name = of_pdt_build_full_name(dp);
irq_trans_init(dp); irq_trans_init(dp);
return dp; return dp;
@ -204,8 +187,6 @@ static struct device_node * __init of_pdt_build_tree(struct device_node *parent,
ret = dp; ret = dp;
prev_sibling = dp; prev_sibling = dp;
dp->full_name = of_pdt_build_full_name(dp);
dp->child = of_pdt_build_tree(dp, of_pdt_prom_ops->getchild(node)); dp->child = of_pdt_build_tree(dp, of_pdt_prom_ops->getchild(node));
if (of_pdt_build_more) if (of_pdt_build_more)
@ -228,9 +209,6 @@ void __init of_pdt_build_devicetree(phandle root_node, struct of_pdt_ops *ops)
of_pdt_prom_ops = ops; of_pdt_prom_ops = ops;
of_root = of_pdt_create_node(root_node, NULL); of_root = of_pdt_create_node(root_node, NULL);
#if defined(CONFIG_SPARC)
of_root->path_component_name = "";
#endif
of_root->full_name = "/"; of_root->full_name = "/";
of_root->child = of_pdt_build_tree(of_root, of_root->child = of_pdt_build_tree(of_root,

View File

@ -571,9 +571,9 @@ int bbc_envctrl_init(struct bbc_i2c_bus *bp)
int devidx = 0; int devidx = 0;
while ((op = bbc_i2c_getdev(bp, devidx++)) != NULL) { while ((op = bbc_i2c_getdev(bp, devidx++)) != NULL) {
if (!strcmp(op->dev.of_node->name, "temperature")) if (of_node_name_eq(op->dev.of_node, "temperature"))
attach_one_temp(bp, op, temp_index++); attach_one_temp(bp, op, temp_index++);
if (!strcmp(op->dev.of_node->name, "fan-control")) if (of_node_name_eq(op->dev.of_node, "fan-control"))
attach_one_fan(bp, op, fan_index++); attach_one_fan(bp, op, fan_index++);
} }
if (temp_index != 0 && fan_index != 0) { if (temp_index != 0 && fan_index != 0) {

View File

@ -906,7 +906,7 @@ static void envctrl_init_i2c_child(struct device_node *dp,
int len; int len;
root_node = of_find_node_by_path("/"); root_node = of_find_node_by_path("/");
if (!strcmp(root_node->name, "SUNW,UltraSPARC-IIi-cEngine")) { if (of_node_name_eq(root_node, "SUNW,UltraSPARC-IIi-cEngine")) {
for (len = 0; len < PCF8584_MAX_CHANNELS; ++len) { for (len = 0; len < PCF8584_MAX_CHANNELS; ++len) {
pchild->mon_type[len] = ENVCTRL_NOMON; pchild->mon_type[len] = ENVCTRL_NOMON;
} }
@ -1039,10 +1039,10 @@ static int envctrl_probe(struct platform_device *op)
index = 0; index = 0;
dp = op->dev.of_node->child; dp = op->dev.of_node->child;
while (dp) { while (dp) {
if (!strcmp(dp->name, "gpio")) { if (of_node_name_eq(dp, "gpio")) {
i2c_childlist[index].i2ctype = I2C_GPIO; i2c_childlist[index].i2ctype = I2C_GPIO;
envctrl_init_i2c_child(dp, &(i2c_childlist[index++])); envctrl_init_i2c_child(dp, &(i2c_childlist[index++]));
} else if (!strcmp(dp->name, "adc")) { } else if (of_node_name_eq(dp, "adc")) {
i2c_childlist[index].i2ctype = I2C_ADC; i2c_childlist[index].i2ctype = I2C_ADC;
envctrl_init_i2c_child(dp, &(i2c_childlist[index++])); envctrl_init_i2c_child(dp, &(i2c_childlist[index++]));
} }

View File

@ -165,9 +165,9 @@ static int flash_probe(struct platform_device *op)
parent = dp->parent; parent = dp->parent;
if (strcmp(parent->name, "sbus") && if (!of_node_name_eq(parent, "sbus") &&
strcmp(parent->name, "sbi") && !of_node_name_eq(parent, "sbi") &&
strcmp(parent->name, "ebus")) !of_node_name_eq(parent, "ebus"))
return -ENODEV; return -ENODEV;
flash.read_base = op->resource[0].start; flash.read_base = op->resource[0].start;

View File

@ -199,10 +199,11 @@ static struct dentry *openpromfs_lookup(struct inode *dir, struct dentry *dentry
child = dp->child; child = dp->child;
while (child) { while (child) {
int n = strlen(child->path_component_name); const char *node_name = kbasename(child->full_name);
int n = strlen(node_name);
if (len == n && if (len == n &&
!strncmp(child->path_component_name, name, len)) { !strncmp(node_name, name, len)) {
ent_type = op_inode_node; ent_type = op_inode_node;
ent_data.node = child; ent_data.node = child;
ino = child->unique_id; ino = child->unique_id;
@ -245,7 +246,7 @@ found:
set_nlink(inode, 2); set_nlink(inode, 2);
break; break;
case op_inode_prop: case op_inode_prop:
if (!strcmp(dp->name, "options") && (len == 17) && if (of_node_name_eq(dp, "options") && (len == 17) &&
!strncmp (name, "security-password", 17)) !strncmp (name, "security-password", 17))
inode->i_mode = S_IFREG | S_IRUSR | S_IWUSR; inode->i_mode = S_IFREG | S_IRUSR | S_IWUSR;
else else
@ -293,8 +294,8 @@ static int openpromfs_readdir(struct file *file, struct dir_context *ctx)
} }
while (child) { while (child) {
if (!dir_emit(ctx, if (!dir_emit(ctx,
child->path_component_name, kbasename(child->full_name),
strlen(child->path_component_name), strlen(kbasename(child->full_name)),
child->unique_id, DT_DIR)) child->unique_id, DT_DIR))
goto out; goto out;

View File

@ -66,7 +66,6 @@ struct device_node {
unsigned long _flags; unsigned long _flags;
void *data; void *data;
#if defined(CONFIG_SPARC) #if defined(CONFIG_SPARC)
const char *path_component_name;
unsigned int unique_id; unsigned int unique_id;
struct of_irq_controller *irq_trans; struct of_irq_controller *irq_trans;
#endif #endif

View File

@ -2071,12 +2071,12 @@ static int cs4231_ebus_probe(struct platform_device *op)
static int cs4231_probe(struct platform_device *op) static int cs4231_probe(struct platform_device *op)
{ {
#ifdef EBUS_SUPPORT #ifdef EBUS_SUPPORT
if (!strcmp(op->dev.of_node->parent->name, "ebus")) if (of_node_name_eq(op->dev.of_node->parent, "ebus"))
return cs4231_ebus_probe(op); return cs4231_ebus_probe(op);
#endif #endif
#ifdef SBUS_SUPPORT #ifdef SBUS_SUPPORT
if (!strcmp(op->dev.of_node->parent->name, "sbus") || if (of_node_name_eq(op->dev.of_node->parent, "sbus") ||
!strcmp(op->dev.of_node->parent->name, "sbi")) of_node_name_eq(op->dev.of_node->parent, "sbi"))
return cs4231_sbus_probe(op); return cs4231_sbus_probe(op);
#endif #endif
return -ENODEV; return -ENODEV;