really switch that shite to m4

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
diff --git a/Makefile b/Makefile
index eeef81f..6c56646 100644
--- a/Makefile
+++ b/Makefile
@@ -11,14 +11,5 @@
 clean:
 	@rm -f *.res
 
-%.res: %.nat32 calls
-	@cpp -E `m4 <calls | awk '{print "-D"$$1"="$$2}'` $< |grep -v '^#'> $@
-
-%.res: %.nat64 calls
-	@cpp -E `m4 <calls | awk '{print "-D"$$1"="$$3}'` $< |grep -v '^#'> $@
-
-%.res: %.comp calls
-	@cpp -E `m4 <calls | awk '{print "-D"$$1"="$$4}'` $< |grep -v '^#'> $@
-
-%.res: %.n32 calls
-	@cpp -E `m4 <calls | awk '{print "-D"$$1"="$$5}'` $< |grep -v '^#'> $@
+%.res: %.tab defs calls
+	@cpp -E <$< `m4 -DABI=$* defs | awk '{print "-D"$$1"="$$2}'` |grep -v '^#'> $@
diff --git a/alpha.nat64 b/alpha.tab
similarity index 100%
rename from alpha.nat64
rename to alpha.tab
diff --git a/amd64.nat64 b/amd64.tab
similarity index 100%
rename from amd64.nat64
rename to amd64.tab
diff --git a/arm-C.comp b/arm-C.tab
similarity index 100%
rename from arm-C.comp
rename to arm-C.tab
diff --git a/arm.nat32 b/arm.tab
similarity index 100%
rename from arm.nat32
rename to arm.tab
diff --git a/arm64.nat64 b/arm64.tab
similarity index 100%
rename from arm64.nat64
rename to arm64.tab
diff --git a/avr32.nat32 b/avr32.tab
similarity index 100%
rename from avr32.nat32
rename to avr32.tab
diff --git a/blackfin.nat32 b/blackfin.tab
similarity index 100%
rename from blackfin.nat32
rename to blackfin.tab
diff --git a/c6x.nat32 b/c6x.tab
similarity index 100%
rename from c6x.nat32
rename to c6x.tab
diff --git a/calls b/calls
index cd2d309..f135435 100644
--- a/calls
+++ b/calls
@@ -1,6 +1,3 @@
-define(`all',`sys_$1 sys_$1 sys_$1 sys_$1')dnl
-define(`openlike',`sys_$1 sys_$1 compat_sys_$1 sys_$1')dnl
-define(`compat',`sys_$1 sys_$1 compat_sys_$1 compat_sys_$1')dnl
 Open		openlike(open)
 Openat		openlike(openat)
 Open_by_handle	openlike(open_by_handle_at)
@@ -33,4 +30,6 @@
 Getpid		all(getpid)
 Access		all(access)
 Faccessat	all(faccessat)
-Stime		compat(stime)
+Stime		time(stime)
+Utime		time(utime)
+Utimes		time(utimes)
diff --git a/cris.nat32 b/cris.tab
similarity index 100%
rename from cris.nat32
rename to cris.tab
diff --git a/defs b/defs
new file mode 100644
index 0000000..1481d1d
--- /dev/null
+++ b/defs
@@ -0,0 +1,35 @@
+divert(`-1')
+define(`abi',translit(ABI,`-',`_'))
+
+define(`nat64',`define'(type_$1,nat)`define'(size_$1,64))
+define(`nat32',`define'(type_$1,nat)`define'(size_$1,32))
+define(`c32',`define'(type_$1,comp)`define'(size_$1,32))
+define(`n32',`define'(type_$1,narrow)`define'(size_$1,32))
+
+nat64(alpha) nat64(amd64) nat64(arm64) nat64(ia64) nat64(mips64) nat64(parisc64)
+nat64(powerpc64) nat64(s390x) nat64(sh64) nat64(sparc64) nat64(tile64)
+nat32(arm) nat32(avr32) nat32(blackfin) nat32(c6x) nat32(cris) nat32(frv)
+nat32(h8300) nat32(hexagon) nat32(i386) nat32(m32r) nat32(m68k)
+nat32(microblaze) nat32(mips32) nat32(mn10300) nat32(openrisc) nat32(parisc32)
+nat32(powerpc32) nat32(s390) nat32(score) nat32(sh32) nat32(sparc32)
+nat32(tile32) nat32(unicore32) nat32(xtensa) c32(arm_C) c32(mips_C)
+c32(parisc_C) c32(powerpc_C) c32(s390_C) c32(sparc_C) c32(tile_C) c32(x86_C)
+n32(mips_n32) n32(x32)
+
+define(`type',`type_$1')
+
+dnl 1: sys_foo on everything
+define(`all',`sys_$1')
+
+dnl 2: compat_sys_foo on compat and n32, sys_foo on native
+define(`compat',`ifelse(type(abi),nat,sys_$1,compat_sys_$1)')
+
+dnl 3: open and friends - compat_sys_foo on compat, sys_foo on native and n32
+define(`openlike',`ifelse(type(abi),comp,compat_sys_$1,sys_$1)')
+
+dnl 4: time_t and clock_t - compat_sys_foo on compat and mips-n32, sys_foo on
+dnl    everything else
+define(`time',`ifelse(type(abi),comp,compat_sys_$1,abi,mips_n32,compat_sys_$1,sys_$1)')
+
+divert`'dnl
+include(`calls')dnl
diff --git a/frv.nat32 b/frv.tab
similarity index 100%
rename from frv.nat32
rename to frv.tab
diff --git a/h8300.nat32 b/h8300.tab
similarity index 100%
rename from h8300.nat32
rename to h8300.tab
diff --git a/hexagon.nat32 b/hexagon.tab
similarity index 100%
rename from hexagon.nat32
rename to hexagon.tab
diff --git a/i386.nat32 b/i386.tab
similarity index 100%
rename from i386.nat32
rename to i386.tab
diff --git a/ia64.nat64 b/ia64.tab
similarity index 100%
rename from ia64.nat64
rename to ia64.tab
diff --git a/m32r.nat32 b/m32r.tab
similarity index 100%
rename from m32r.nat32
rename to m32r.tab
diff --git a/m68k.nat32 b/m68k.tab
similarity index 100%
rename from m68k.nat32
rename to m68k.tab
diff --git a/microblaze.nat32 b/microblaze.tab
similarity index 100%
rename from microblaze.nat32
rename to microblaze.tab
diff --git a/mips-C.comp b/mips-C.tab
similarity index 100%
rename from mips-C.comp
rename to mips-C.tab
diff --git a/mips-n32.n32 b/mips-n32.tab
similarity index 100%
rename from mips-n32.n32
rename to mips-n32.tab
diff --git a/mips32.nat32 b/mips32.tab
similarity index 100%
rename from mips32.nat32
rename to mips32.tab
diff --git a/mips64.nat64 b/mips64.tab
similarity index 100%
rename from mips64.nat64
rename to mips64.tab
diff --git a/mn10300.nat32 b/mn10300.tab
similarity index 100%
rename from mn10300.nat32
rename to mn10300.tab
diff --git a/openrisc.nat32 b/openrisc.tab
similarity index 100%
rename from openrisc.nat32
rename to openrisc.tab
diff --git a/parisc-C.comp b/parisc-C.tab
similarity index 100%
rename from parisc-C.comp
rename to parisc-C.tab
diff --git a/parisc32.nat32 b/parisc32.tab
similarity index 100%
rename from parisc32.nat32
rename to parisc32.tab
diff --git a/parisc64.nat64 b/parisc64.tab
similarity index 100%
rename from parisc64.nat64
rename to parisc64.tab
diff --git a/powerpc-C.comp b/powerpc-C.tab
similarity index 100%
rename from powerpc-C.comp
rename to powerpc-C.tab
diff --git a/powerpc32.nat32 b/powerpc32.tab
similarity index 100%
rename from powerpc32.nat32
rename to powerpc32.tab
diff --git a/powerpc64.nat64 b/powerpc64.tab
similarity index 100%
rename from powerpc64.nat64
rename to powerpc64.tab
diff --git a/s390-C.comp b/s390-C.tab
similarity index 100%
rename from s390-C.comp
rename to s390-C.tab
diff --git a/s390.nat32 b/s390.tab
similarity index 100%
rename from s390.nat32
rename to s390.tab
diff --git a/s390x.nat64 b/s390x.tab
similarity index 100%
rename from s390x.nat64
rename to s390x.tab
diff --git a/score.nat32 b/score.tab
similarity index 100%
rename from score.nat32
rename to score.tab
diff --git a/sh32.nat32 b/sh32.tab
similarity index 100%
rename from sh32.nat32
rename to sh32.tab
diff --git a/sh64.nat64 b/sh64.tab
similarity index 100%
rename from sh64.nat64
rename to sh64.tab
diff --git a/sparc-C.comp b/sparc-C.tab
similarity index 100%
rename from sparc-C.comp
rename to sparc-C.tab
diff --git a/sparc32.nat32 b/sparc32.tab
similarity index 100%
rename from sparc32.nat32
rename to sparc32.tab
diff --git a/sparc64.nat64 b/sparc64.tab
similarity index 100%
rename from sparc64.nat64
rename to sparc64.tab
diff --git a/tile-C.comp b/tile-C.tab
similarity index 100%
rename from tile-C.comp
rename to tile-C.tab
diff --git a/tile32.nat32 b/tile32.tab
similarity index 100%
rename from tile32.nat32
rename to tile32.tab
diff --git a/tile64.nat64 b/tile64.tab
similarity index 100%
rename from tile64.nat64
rename to tile64.tab
diff --git a/unicore32.nat32 b/unicore32.nat32
deleted file mode 100644
index 843b89e..0000000
--- a/unicore32.nat32
+++ /dev/null
@@ -1,257 +0,0 @@
-sys_io_setup
-sys_io_destroy
-sys_io_submit
-sys_io_cancel
-sys_io_getevents
-sys_setxattr
-sys_lsetxattr
-sys_fsetxattr
-sys_getxattr
-sys_lgetxattr
-sys_fgetxattr
-sys_listxattr
-sys_llistxattr
-sys_flistxattr
-sys_removexattr
-sys_lremovexattr
-sys_fremovexattr
-sys_getcwd
-sys_lookup_dcookie
-sys_eventfd2
-sys_epoll_create1
-sys_epoll_ctl
-sys_epoll_pwait
-sys_dup
-sys_dup3
-sys_fcntl64
-sys_inotify_init1
-sys_inotify_add_watch
-sys_inotify_rm_watch
-sys_ioctl
-sys_ioprio_set
-sys_ioprio_get
-sys_flock
-Mknodat
-Mkdirat
-Unlinkat
-Symlinkat
-Linkat
-Renameat
-Umount
-Mount
-sys_pivot_root
-sys_ni_syscall
-sys_statfs64
-sys_fstatfs64
-sys_truncate64
-sys_ftruncate64
-sys_fallocate
-Faccessat
-Chdir
-sys_fchdir
-sys_chroot
-Fchmod
-Fchmodat
-sys_fchownat
-sys_fchown
-Openat
-Close
-sys_vhangup
-sys_pipe2
-sys_quotactl
-sys_getdents64
-sys_llseek
-sys_read
-sys_write
-sys_readv
-sys_writev
-sys_pread64
-sys_pwrite64
-sys_preadv
-sys_pwritev
-sys_sendfile64
-sys_pselect6
-sys_ppoll
-Signalfd4
-sys_vmsplice
-sys_splice
-sys_tee
-Readlinkat
-sys_fstatat64
-sys_fstat64
-sys_sync
-sys_fsync
-sys_fdatasync
-sys_sync_file_range
-sys_timerfd_create
-sys_timerfd_settime
-sys_timerfd_gettime
-sys_utimensat
-sys_acct
-sys_capget
-sys_capset
-sys_personality
-sys_exit
-sys_exit_group
-sys_waitid
-sys_set_tid_address
-sys_unshare
-sys_futex
-sys_set_robust_list
-sys_get_robust_list
-sys_nanosleep
-sys_getitimer
-sys_setitimer
-sys_kexec_load
-sys_init_module
-sys_delete_module
-sys_timer_create
-sys_timer_gettime
-sys_timer_getoverrun
-sys_timer_settime
-sys_timer_delete
-sys_clock_settime
-sys_clock_gettime
-sys_clock_getres
-sys_clock_nanosleep
-sys_syslog
-sys_ptrace
-sys_sched_setparam
-sys_sched_setscheduler
-sys_sched_getscheduler
-sys_sched_getparam
-sys_sched_setaffinity
-sys_sched_getaffinity
-sys_sched_yield
-sys_sched_get_priority_max
-sys_sched_get_priority_min
-sys_sched_rr_get_interval
-sys_restart_syscall
-sys_kill
-sys_tkill
-sys_tgkill
-sys_sigaltstack
-sys_rt_sigsuspend
-sys_rt_sigaction
-sys_rt_sigprocmask
-sys_rt_sigpending
-sys_rt_sigtimedwait
-sys_rt_sigqueueinfo
-sys_rt_sigreturn
-sys_setpriority
-sys_getpriority
-sys_reboot
-sys_setregid
-sys_setgid
-sys_setreuid
-sys_setuid
-sys_setresuid
-sys_getresuid
-sys_setresgid
-sys_getresgid
-sys_setfsuid
-sys_setfsgid
-sys_times
-sys_setpgid
-sys_getpgid
-sys_getsid
-sys_setsid
-sys_getgroups
-sys_setgroups
-sys_newuname
-sys_sethostname
-sys_setdomainname
-sys_getrlimit
-sys_setrlimit
-sys_getrusage
-sys_umask
-sys_prctl
-sys_getcpu
-sys_gettimeofday
-sys_settimeofday
-sys_adjtimex
-Getpid
-sys_getppid
-sys_getuid
-sys_geteuid
-sys_getgid
-sys_getegid
-sys_gettid
-sys_sysinfo
-sys_mq_open
-sys_mq_unlink
-sys_mq_timedsend
-sys_mq_timedreceive
-sys_mq_notify
-sys_mq_getsetattr
-sys_msgget
-sys_msgctl
-sys_msgrcv
-sys_msgsnd
-sys_semget
-sys_semctl
-sys_semtimedop
-sys_semop
-sys_shmget
-sys_shmctl
-sys_shmat
-sys_shmdt
-sys_socket
-sys_socketpair
-sys_bind
-sys_listen
-sys_accept
-sys_connect
-sys_getsockname
-sys_getpeername
-sys_sendto
-sys_recvfrom
-sys_setsockopt
-sys_getsockopt
-sys_shutdown
-sys_sendmsg
-sys_recvmsg
-sys_readahead
-sys_brk
-sys_munmap
-sys_mremap
-sys_add_key
-sys_request_key
-sys_keyctl
-sys_clone
-Execve
-sys_mmap2
-sys_fadvise64_64
-sys_swapon
-sys_swapoff
-sys_mprotect
-sys_msync
-sys_mlock
-sys_munlock
-sys_mlockall
-sys_munlockall
-sys_mincore
-sys_madvise
-sys_remap_file_pages
-sys_mbind
-sys_get_mempolicy
-sys_set_mempolicy
-sys_migrate_pages
-sys_move_pages
-sys_rt_tgsigqueueinfo
-sys_perf_event_open
-sys_accept4
-sys_recvmmsg
-sys_wait4
-sys_prlimit64
-sys_fanotify_init
-sys_fanotify_mark
-sys_name_to_handle_at
-Open_by_handle
-sys_clock_adjtime
-sys_syncfs
-sys_setns
-sys_sendmmsg
-sys_process_vm_readv
-sys_process_vm_writev
-sys_kcmp
diff --git a/hexagon.nat32 b/unicore32.tab
similarity index 100%
copy from hexagon.nat32
copy to unicore32.tab
diff --git a/x32.n32 b/x32.tab
similarity index 100%
rename from x32.n32
rename to x32.tab
diff --git a/x86-C.comp b/x86-C.tab
similarity index 100%
rename from x86-C.comp
rename to x86-C.tab
diff --git a/xtensa.nat32 b/xtensa.tab
similarity index 100%
rename from xtensa.nat32
rename to xtensa.tab