]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/ppc64/kernel/misc.S
ppc64: move stack switching up in interrupt processing
[karo-tx-linux.git] / arch / ppc64 / kernel / misc.S
index e7241ad80a08212758c2e2c2538246595714c21c..d82a30dc26f8f2152ce3fc12f86d549486222914 100644 (file)
@@ -28,6 +28,7 @@
 #include <asm/ppc_asm.h>
 #include <asm/asm-offsets.h>
 #include <asm/cputable.h>
+#include <asm/thread_info.h>
 
        .text
 
@@ -64,44 +65,6 @@ _GLOBAL(get_srr1)
 _GLOBAL(get_sp)
        mr      r3,r1
        blr
-               
-#ifdef CONFIG_PPC_ISERIES
-/* unsigned long local_save_flags(void) */
-_GLOBAL(local_get_flags)
-       lbz     r3,PACAPROCENABLED(r13)
-       blr
-
-/* unsigned long local_irq_disable(void) */
-_GLOBAL(local_irq_disable)
-       lbz     r3,PACAPROCENABLED(r13)
-       li      r4,0
-       stb     r4,PACAPROCENABLED(r13)
-       blr                     /* Done */
-
-/* void local_irq_restore(unsigned long flags) */      
-_GLOBAL(local_irq_restore)
-       lbz     r5,PACAPROCENABLED(r13)
-        /* Check if things are setup the way we want _already_. */
-       cmpw    0,r3,r5
-       beqlr
-       /* are we enabling interrupts? */
-       cmpdi   0,r3,0
-       stb     r3,PACAPROCENABLED(r13)
-       beqlr
-       /* Check pending interrupts */
-       /*   A decrementer, IPI or PMC interrupt may have occurred
-        *   while we were in the hypervisor (which enables) */
-       ld      r4,PACALPPACA+LPPACAANYINT(r13)
-       cmpdi   r4,0
-       beqlr
-
-       /*
-        * Handle pending interrupts in interrupt context
-        */
-       li      r0,0x5555
-       sc
-       blr
-#endif /* CONFIG_PPC_ISERIES */
 
 #ifdef CONFIG_IRQSTACKS
 _GLOBAL(call_do_softirq)
@@ -115,12 +78,12 @@ _GLOBAL(call_do_softirq)
        mtlr    r0
        blr
 
-_GLOBAL(call_handle_IRQ_event)
+_GLOBAL(call_ppc_irq_dispatch_handler)
        mflr    r0
        std     r0,16(r1)
-       stdu    r1,THREAD_SIZE-112(r6)
-       mr      r1,r6
-       bl      .handle_IRQ_event
+       stdu    r1,THREAD_SIZE-112(r5)
+       mr      r1,r5
+       bl      .ppc_irq_dispatch_handler
        ld      r1,0(r1)
        ld      r0,16(r1)
        mtlr    r0
@@ -329,7 +292,7 @@ _GLOBAL(__flush_dcache_icache)
 
 /* Flush the dcache */
        ld      r7,PPC64_CACHES@toc(r2)
-       clrrdi  r3,r3,12                    /* Page align */
+       clrrdi  r3,r3,PAGE_SHIFT                    /* Page align */
        lwz     r4,DCACHEL1LINESPERPAGE(r7)     /* Get # dcache lines per page */
        lwz     r5,DCACHEL1LINESIZE(r7)         /* Get dcache line size */
        mr      r6,r3
@@ -488,25 +451,6 @@ _GLOBAL(_outsl_ns)
        sync
        blr     
 
-
-_GLOBAL(cvt_fd)
-       lfd     0,0(r5)         /* load up fpscr value */
-       mtfsf   0xff,0
-       lfs     0,0(r3)
-       stfd    0,0(r4)
-       mffs    0               /* save new fpscr value */
-       stfd    0,0(r5)
-       blr
-
-_GLOBAL(cvt_df)
-       lfd     0,0(r5)         /* load up fpscr value */
-       mtfsf   0xff,0
-       lfd     0,0(r3)
-       stfs    0,0(r4)
-       mffs    0               /* save new fpscr value */
-       stfd    0,0(r5)
-       blr
-
 /*
  * identify_cpu and calls setup_cpu
  * In: r3 = base of the cpu_specs array
@@ -616,7 +560,7 @@ _GLOBAL(real_readb)
        isync
        blr
 
-       /*
+/*
  * Do an IO access in real mode
  */
 _GLOBAL(real_writeb)
@@ -648,6 +592,76 @@ _GLOBAL(real_writeb)
        blr
 #endif /* defined(CONFIG_PPC_PMAC) || defined(CONFIG_PPC_MAPLE) */
 
+/*
+ * SCOM access functions for 970 (FX only for now)
+ *
+ * unsigned long scom970_read(unsigned int address);
+ * void scom970_write(unsigned int address, unsigned long value);
+ *
+ * The address passed in is the 24 bits register address. This code
+ * is 970 specific and will not check the status bits, so you should
+ * know what you are doing.
+ */
+_GLOBAL(scom970_read)
+       /* interrupts off */
+       mfmsr   r4
+       ori     r0,r4,MSR_EE
+       xori    r0,r0,MSR_EE
+       mtmsrd  r0,1
+
+       /* rotate 24 bits SCOM address 8 bits left and mask out it's low 8 bits
+        * (including parity). On current CPUs they must be 0'd,
+        * and finally or in RW bit
+        */
+       rlwinm  r3,r3,8,0,15
+       ori     r3,r3,0x8000
+
+       /* do the actual scom read */
+       sync
+       mtspr   SPRN_SCOMC,r3
+       isync
+       mfspr   r3,SPRN_SCOMD
+       isync
+       mfspr   r0,SPRN_SCOMC
+       isync
+
+       /* XXX: fixup result on some buggy 970's (ouch ! we lost a bit, bah
+        * that's the best we can do). Not implemented yet as we don't use
+        * the scom on any of the bogus CPUs yet, but may have to be done
+        * ultimately
+        */
+
+       /* restore interrupts */
+       mtmsrd  r4,1
+       blr
+
+
+_GLOBAL(scom970_write)
+       /* interrupts off */
+       mfmsr   r5
+       ori     r0,r5,MSR_EE
+       xori    r0,r0,MSR_EE
+       mtmsrd  r0,1
+
+       /* rotate 24 bits SCOM address 8 bits left and mask out it's low 8 bits
+        * (including parity). On current CPUs they must be 0'd.
+        */
+
+       rlwinm  r3,r3,8,0,15
+
+       sync
+       mtspr   SPRN_SCOMD,r4      /* write data */
+       isync
+       mtspr   SPRN_SCOMC,r3      /* write command */
+       isync
+       mfspr   3,SPRN_SCOMC
+       isync
+
+       /* restore interrupts */
+       mtmsrd  r5,1
+       blr
+
+
 /*
  * Create a kernel thread
  *   kernel_thread(fn, arg, flags)
@@ -692,38 +706,6 @@ _GLOBAL(disable_kernel_fp)
        isync
        blr
 
-/*
- * giveup_fpu(tsk)
- * Disable FP for the task given as the argument,
- * and save the floating-point registers in its thread_struct.
- * Enables the FPU for use in the kernel on return.
- */
-_GLOBAL(giveup_fpu)
-       mfmsr   r5
-       ori     r5,r5,MSR_FP
-       mtmsrd  r5                      /* enable use of fpu now */
-       isync
-       cmpdi   0,r3,0
-       beqlr-                          /* if no previous owner, done */
-       addi    r3,r3,THREAD            /* want THREAD of task */
-       ld      r5,PT_REGS(r3)
-       cmpdi   0,r5,0
-       SAVE_32FPRS(0, r3)
-       mffs    fr0
-       stfd    fr0,THREAD_FPSCR(r3)
-       beq     1f
-       ld      r4,_MSR-STACK_FRAME_OVERHEAD(r5)
-       li      r3,MSR_FP|MSR_FE0|MSR_FE1
-       andc    r4,r4,r3                /* disable FP for previous task */
-       std     r4,_MSR-STACK_FRAME_OVERHEAD(r5)
-1:
-#ifndef CONFIG_SMP
-       li      r5,0
-       ld      r4,last_task_used_math@got(r2)
-       std     r5,0(r4)
-#endif /* CONFIG_SMP */
-       blr
-
 #ifdef CONFIG_ALTIVEC
 
 #if 0 /* this has no callers for now */
@@ -778,6 +760,13 @@ _GLOBAL(giveup_altivec)
 _GLOBAL(__setup_cpu_power3)
        blr
 
+_GLOBAL(execve)
+       li      r0,__NR_execve
+       sc
+       bnslr
+       neg     r3,r3
+       blr
+
 /* kexec_wait(phys_cpu)
  *
  * wait for the flag to change, indicating this kernel is going away but
@@ -948,566 +937,3 @@ _GLOBAL(kexec_sequence)
        li      r5,0
        blr     /* image->start(physid, image->start, 0); */
 #endif /* CONFIG_KEXEC */
-
-/* Why isn't this a) automatic, b) written in 'C'? */  
-       .balign 8
-_GLOBAL(sys_call_table32)
-       .llong .sys_restart_syscall     /* 0 */
-       .llong .sys_exit
-       .llong .ppc_fork
-       .llong .sys_read
-       .llong .sys_write
-       .llong .compat_sys_open         /* 5 */
-       .llong .sys_close
-       .llong .sys32_waitpid
-       .llong .sys32_creat
-       .llong .sys_link
-       .llong .sys_unlink              /* 10 */
-       .llong .sys32_execve
-       .llong .sys_chdir
-       .llong .compat_sys_time
-       .llong .sys_mknod
-       .llong .sys_chmod               /* 15 */
-       .llong .sys_lchown
-       .llong .sys_ni_syscall          /* old break syscall */
-       .llong .sys_ni_syscall          /* old stat syscall */
-       .llong .ppc32_lseek
-       .llong .sys_getpid              /* 20 */
-       .llong .compat_sys_mount
-       .llong .sys_oldumount
-       .llong .sys_setuid
-       .llong .sys_getuid
-       .llong .compat_sys_stime        /* 25 */
-       .llong .sys32_ptrace
-       .llong .sys_alarm
-       .llong .sys_ni_syscall          /* old fstat syscall */
-       .llong .sys32_pause
-       .llong .compat_sys_utime                /* 30 */
-       .llong .sys_ni_syscall          /* old stty syscall */
-       .llong .sys_ni_syscall          /* old gtty syscall */
-       .llong .sys32_access
-       .llong .sys32_nice
-       .llong .sys_ni_syscall          /* 35 - old ftime syscall */
-       .llong .sys_sync
-       .llong .sys32_kill
-       .llong .sys_rename
-       .llong .sys32_mkdir
-       .llong .sys_rmdir               /* 40 */
-       .llong .sys_dup
-       .llong .sys_pipe
-       .llong .compat_sys_times
-       .llong .sys_ni_syscall          /* old prof syscall */
-       .llong .sys_brk                 /* 45 */
-       .llong .sys_setgid
-       .llong .sys_getgid
-       .llong .sys_signal
-       .llong .sys_geteuid
-       .llong .sys_getegid             /* 50 */
-       .llong .sys_acct
-       .llong .sys_umount
-       .llong .sys_ni_syscall          /* old lock syscall */
-       .llong .compat_sys_ioctl
-       .llong .compat_sys_fcntl                /* 55 */
-       .llong .sys_ni_syscall          /* old mpx syscall */
-       .llong .sys32_setpgid
-       .llong .sys_ni_syscall          /* old ulimit syscall */
-       .llong .sys32_olduname
-       .llong .sys32_umask             /* 60 */
-       .llong .sys_chroot
-       .llong .sys_ustat
-       .llong .sys_dup2
-       .llong .sys_getppid
-       .llong .sys_getpgrp             /* 65 */
-       .llong .sys_setsid
-       .llong .sys32_sigaction
-       .llong .sys_sgetmask
-       .llong .sys32_ssetmask
-       .llong .sys_setreuid            /* 70 */
-       .llong .sys_setregid
-       .llong .ppc32_sigsuspend
-       .llong .compat_sys_sigpending
-       .llong .sys32_sethostname
-       .llong .compat_sys_setrlimit            /* 75 */
-       .llong .compat_sys_old_getrlimit
-       .llong .compat_sys_getrusage
-       .llong .sys32_gettimeofday
-       .llong .sys32_settimeofday
-       .llong .sys32_getgroups         /* 80 */
-       .llong .sys32_setgroups
-       .llong .sys_ni_syscall          /* old select syscall */
-       .llong .sys_symlink
-       .llong .sys_ni_syscall          /* old lstat syscall */
-       .llong .sys32_readlink          /* 85 */
-       .llong .sys_uselib
-       .llong .sys_swapon
-       .llong .sys_reboot
-       .llong .old32_readdir
-       .llong .sys_mmap                /* 90 */
-       .llong .sys_munmap
-       .llong .sys_truncate
-       .llong .sys_ftruncate
-       .llong .sys_fchmod
-       .llong .sys_fchown              /* 95 */
-       .llong .sys32_getpriority
-       .llong .sys32_setpriority
-       .llong .sys_ni_syscall          /* old profil syscall */
-       .llong .compat_sys_statfs
-       .llong .compat_sys_fstatfs              /* 100 */
-       .llong .sys_ni_syscall          /* old ioperm syscall */
-       .llong .compat_sys_socketcall
-       .llong .sys32_syslog
-       .llong .compat_sys_setitimer
-       .llong .compat_sys_getitimer            /* 105 */
-       .llong .compat_sys_newstat
-       .llong .compat_sys_newlstat
-       .llong .compat_sys_newfstat
-       .llong .sys32_uname
-       .llong .sys_ni_syscall          /* 110 old iopl syscall */
-       .llong .sys_vhangup
-       .llong .sys_ni_syscall          /* old idle syscall */
-       .llong .sys_ni_syscall          /* old vm86 syscall */
-       .llong .compat_sys_wait4
-       .llong .sys_swapoff             /* 115 */
-       .llong .sys32_sysinfo
-       .llong .sys32_ipc
-       .llong .sys_fsync
-       .llong .ppc32_sigreturn
-       .llong .ppc_clone               /* 120 */
-       .llong .sys32_setdomainname
-       .llong .ppc64_newuname
-       .llong .sys_ni_syscall          /* old modify_ldt syscall */
-       .llong .sys32_adjtimex
-       .llong .sys_mprotect            /* 125 */
-       .llong .compat_sys_sigprocmask
-       .llong .sys_ni_syscall          /* old create_module syscall */
-       .llong .sys_init_module
-       .llong .sys_delete_module
-       .llong .sys_ni_syscall          /* 130 old get_kernel_syms syscall */
-       .llong .sys_quotactl
-       .llong .sys32_getpgid
-       .llong .sys_fchdir
-       .llong .sys_bdflush
-       .llong .sys32_sysfs             /* 135 */
-       .llong .ppc64_personality
-       .llong .sys_ni_syscall          /* for afs_syscall */
-       .llong .sys_setfsuid
-       .llong .sys_setfsgid
-       .llong .sys_llseek              /* 140 */
-        .llong .sys32_getdents
-       .llong .ppc32_select
-       .llong .sys_flock
-       .llong .sys_msync
-       .llong .compat_sys_readv        /* 145 */
-       .llong .compat_sys_writev
-       .llong .sys32_getsid
-       .llong .sys_fdatasync
-       .llong .sys32_sysctl
-       .llong .sys_mlock               /* 150 */
-       .llong .sys_munlock
-       .llong .sys_mlockall
-       .llong .sys_munlockall
-       .llong .sys32_sched_setparam
-       .llong .sys32_sched_getparam    /* 155 */
-       .llong .sys32_sched_setscheduler
-       .llong .sys32_sched_getscheduler
-       .llong .sys_sched_yield
-       .llong .sys32_sched_get_priority_max
-       .llong .sys32_sched_get_priority_min  /* 160 */
-       .llong .sys32_sched_rr_get_interval
-       .llong .compat_sys_nanosleep
-       .llong .sys_mremap
-       .llong .sys_setresuid
-       .llong .sys_getresuid           /* 165 */
-       .llong .sys_ni_syscall          /* old query_module syscall */
-       .llong .sys_poll
-       .llong .compat_sys_nfsservctl
-       .llong .sys_setresgid
-       .llong .sys_getresgid           /* 170 */
-       .llong .sys32_prctl
-       .llong .ppc32_rt_sigreturn
-       .llong .sys32_rt_sigaction
-       .llong .sys32_rt_sigprocmask
-       .llong .sys32_rt_sigpending     /* 175 */
-       .llong .compat_sys_rt_sigtimedwait
-       .llong .sys32_rt_sigqueueinfo
-       .llong .ppc32_rt_sigsuspend
-       .llong .sys32_pread64
-       .llong .sys32_pwrite64          /* 180 */
-       .llong .sys_chown
-       .llong .sys_getcwd
-       .llong .sys_capget
-       .llong .sys_capset
-       .llong .sys32_sigaltstack       /* 185 */
-       .llong .sys32_sendfile
-       .llong .sys_ni_syscall          /* reserved for streams1 */
-       .llong .sys_ni_syscall          /* reserved for streams2 */
-       .llong .ppc_vfork
-       .llong .compat_sys_getrlimit            /* 190 */
-       .llong .sys32_readahead
-       .llong .sys32_mmap2
-       .llong .sys32_truncate64
-       .llong .sys32_ftruncate64
-       .llong .sys_stat64              /* 195 */
-       .llong .sys_lstat64
-       .llong .sys_fstat64
-       .llong .sys32_pciconfig_read
-       .llong .sys32_pciconfig_write
-       .llong .sys32_pciconfig_iobase  /* 200 - pciconfig_iobase */
-       .llong .sys_ni_syscall          /* reserved for MacOnLinux */
-       .llong .sys_getdents64
-       .llong .sys_pivot_root
-       .llong .compat_sys_fcntl64
-       .llong .sys_madvise             /* 205 */
-       .llong .sys_mincore
-       .llong .sys_gettid
-       .llong .sys_tkill
-       .llong .sys_setxattr
-       .llong .sys_lsetxattr           /* 210 */
-       .llong .sys_fsetxattr
-       .llong .sys_getxattr
-       .llong .sys_lgetxattr
-       .llong .sys_fgetxattr
-       .llong .sys_listxattr           /* 215 */
-       .llong .sys_llistxattr
-       .llong .sys_flistxattr
-       .llong .sys_removexattr
-       .llong .sys_lremovexattr
-       .llong .sys_fremovexattr        /* 220 */
-       .llong .compat_sys_futex
-       .llong .compat_sys_sched_setaffinity
-       .llong .compat_sys_sched_getaffinity
-       .llong .sys_ni_syscall
-       .llong .sys_ni_syscall          /* 225 - reserved for tux */
-       .llong .sys32_sendfile64
-       .llong .compat_sys_io_setup
-       .llong .sys_io_destroy
-       .llong .compat_sys_io_getevents
-       .llong .compat_sys_io_submit
-       .llong .sys_io_cancel
-       .llong .sys_set_tid_address
-       .llong .ppc32_fadvise64
-       .llong .sys_exit_group
-       .llong .ppc32_lookup_dcookie    /* 235 */
-       .llong .sys_epoll_create
-       .llong .sys_epoll_ctl
-       .llong .sys_epoll_wait
-       .llong .sys_remap_file_pages
-       .llong .ppc32_timer_create      /* 240 */
-       .llong .compat_sys_timer_settime
-       .llong .compat_sys_timer_gettime
-       .llong .sys_timer_getoverrun
-       .llong .sys_timer_delete
-       .llong .compat_sys_clock_settime        /* 245 */
-       .llong .compat_sys_clock_gettime
-       .llong .compat_sys_clock_getres
-       .llong .compat_sys_clock_nanosleep
-       .llong .ppc32_swapcontext
-       .llong .sys32_tgkill            /* 250 */
-       .llong .sys32_utimes
-       .llong .compat_sys_statfs64
-       .llong .compat_sys_fstatfs64
-       .llong .ppc32_fadvise64_64      /* 32bit only fadvise64_64 */
-       .llong .ppc_rtas                /* 255 */
-       .llong .sys_ni_syscall          /* 256 reserved for sys_debug_setcontext */
-       .llong .sys_ni_syscall          /* 257 reserved for vserver */
-       .llong .sys_ni_syscall          /* 258 reserved for new sys_remap_file_pages */
-       .llong .compat_sys_mbind
-       .llong .compat_sys_get_mempolicy        /* 260 */
-       .llong .compat_sys_set_mempolicy
-       .llong .compat_sys_mq_open
-       .llong .sys_mq_unlink
-       .llong .compat_sys_mq_timedsend
-       .llong .compat_sys_mq_timedreceive /* 265 */
-       .llong .compat_sys_mq_notify
-       .llong .compat_sys_mq_getsetattr
-       .llong .compat_sys_kexec_load
-       .llong .sys32_add_key
-       .llong .sys32_request_key       /* 270 */
-       .llong .compat_sys_keyctl
-       .llong .compat_sys_waitid
-       .llong .sys32_ioprio_set
-       .llong .sys32_ioprio_get
-       .llong .sys_inotify_init        /* 275 */
-       .llong .sys_inotify_add_watch
-       .llong .sys_inotify_rm_watch
-
-       .balign 8
-_GLOBAL(sys_call_table)
-       .llong .sys_restart_syscall     /* 0 */
-       .llong .sys_exit
-       .llong .ppc_fork
-       .llong .sys_read
-       .llong .sys_write
-       .llong .sys_open                /* 5 */
-       .llong .sys_close
-       .llong .sys_waitpid
-       .llong .sys_creat
-       .llong .sys_link
-       .llong .sys_unlink              /* 10 */
-       .llong .sys_execve
-       .llong .sys_chdir
-       .llong .sys64_time
-       .llong .sys_mknod
-       .llong .sys_chmod               /* 15 */
-       .llong .sys_lchown
-       .llong .sys_ni_syscall          /* old break syscall */
-       .llong .sys_ni_syscall          /* old stat syscall */
-       .llong .sys_lseek
-       .llong .sys_getpid              /* 20 */
-       .llong .sys_mount
-       .llong .sys_ni_syscall          /* old umount syscall */
-       .llong .sys_setuid
-       .llong .sys_getuid
-       .llong .sys_stime               /* 25 */
-       .llong .sys_ptrace
-       .llong .sys_alarm
-       .llong .sys_ni_syscall          /* old fstat syscall */
-       .llong .sys_pause
-       .llong .sys_utime               /* 30 */
-       .llong .sys_ni_syscall          /* old stty syscall */
-       .llong .sys_ni_syscall          /* old gtty syscall */
-       .llong .sys_access
-       .llong .sys_nice
-       .llong .sys_ni_syscall          /* 35 - old ftime syscall */
-       .llong .sys_sync
-       .llong .sys_kill
-       .llong .sys_rename
-       .llong .sys_mkdir
-       .llong .sys_rmdir               /* 40 */
-       .llong .sys_dup
-       .llong .sys_pipe
-       .llong .sys_times
-       .llong .sys_ni_syscall          /* old prof syscall */
-       .llong .sys_brk                 /* 45 */
-       .llong .sys_setgid
-       .llong .sys_getgid
-       .llong .sys_signal
-       .llong .sys_geteuid
-       .llong .sys_getegid             /* 50 */
-       .llong .sys_acct
-       .llong .sys_umount
-       .llong .sys_ni_syscall          /* old lock syscall */
-       .llong .sys_ioctl
-       .llong .sys_fcntl               /* 55 */
-       .llong .sys_ni_syscall          /* old mpx syscall */
-       .llong .sys_setpgid
-       .llong .sys_ni_syscall          /* old ulimit syscall */
-       .llong .sys_ni_syscall          /* old uname syscall */
-       .llong .sys_umask               /* 60 */
-       .llong .sys_chroot
-       .llong .sys_ustat
-       .llong .sys_dup2
-       .llong .sys_getppid
-       .llong .sys_getpgrp             /* 65 */
-       .llong .sys_setsid
-       .llong .sys_ni_syscall
-       .llong .sys_sgetmask
-       .llong .sys_ssetmask
-       .llong .sys_setreuid            /* 70 */
-       .llong .sys_setregid
-       .llong .sys_ni_syscall
-       .llong .sys_ni_syscall
-       .llong .sys_sethostname
-       .llong .sys_setrlimit           /* 75 */
-       .llong .sys_ni_syscall          /* old getrlimit syscall */
-       .llong .sys_getrusage
-       .llong .sys_gettimeofday
-       .llong .sys_settimeofday
-       .llong .sys_getgroups           /* 80 */
-       .llong .sys_setgroups
-       .llong .sys_ni_syscall          /* old select syscall */
-       .llong .sys_symlink
-       .llong .sys_ni_syscall          /* old lstat syscall */
-       .llong .sys_readlink            /* 85 */
-       .llong .sys_uselib
-       .llong .sys_swapon
-       .llong .sys_reboot
-       .llong .sys_ni_syscall          /* old readdir syscall */
-       .llong .sys_mmap                /* 90 */
-       .llong .sys_munmap
-       .llong .sys_truncate
-       .llong .sys_ftruncate
-       .llong .sys_fchmod
-       .llong .sys_fchown              /* 95 */
-       .llong .sys_getpriority
-       .llong .sys_setpriority
-       .llong .sys_ni_syscall          /* old profil syscall holder */
-       .llong .sys_statfs
-       .llong .sys_fstatfs             /* 100 */
-       .llong .sys_ni_syscall          /* old ioperm syscall */
-       .llong .sys_socketcall
-       .llong .sys_syslog
-       .llong .sys_setitimer
-       .llong .sys_getitimer           /* 105 */
-       .llong .sys_newstat
-       .llong .sys_newlstat
-       .llong .sys_newfstat
-       .llong .sys_ni_syscall          /* old uname syscall */
-       .llong .sys_ni_syscall          /* 110 old iopl syscall */
-       .llong .sys_vhangup
-       .llong .sys_ni_syscall          /* old idle syscall */
-       .llong .sys_ni_syscall          /* old vm86 syscall */
-       .llong .sys_wait4
-       .llong .sys_swapoff             /* 115 */
-       .llong .sys_sysinfo
-       .llong .sys_ipc
-       .llong .sys_fsync
-       .llong .sys_ni_syscall
-       .llong .ppc_clone               /* 120 */
-       .llong .sys_setdomainname
-       .llong .ppc64_newuname
-       .llong .sys_ni_syscall          /* old modify_ldt syscall */
-       .llong .sys_adjtimex
-       .llong .sys_mprotect            /* 125 */
-       .llong .sys_ni_syscall
-       .llong .sys_ni_syscall          /* old create_module syscall */
-       .llong .sys_init_module
-       .llong .sys_delete_module
-       .llong .sys_ni_syscall          /* 130 old get_kernel_syms syscall */
-       .llong .sys_quotactl
-       .llong .sys_getpgid
-       .llong .sys_fchdir
-       .llong .sys_bdflush
-       .llong .sys_sysfs               /* 135 */
-       .llong .ppc64_personality
-       .llong .sys_ni_syscall          /* for afs_syscall */
-       .llong .sys_setfsuid
-       .llong .sys_setfsgid
-       .llong .sys_llseek              /* 140 */
-        .llong .sys_getdents
-       .llong .sys_select
-       .llong .sys_flock
-       .llong .sys_msync
-       .llong .sys_readv               /* 145 */
-       .llong .sys_writev
-       .llong .sys_getsid
-       .llong .sys_fdatasync
-       .llong .sys_sysctl
-       .llong .sys_mlock               /* 150 */
-       .llong .sys_munlock
-       .llong .sys_mlockall
-       .llong .sys_munlockall
-       .llong .sys_sched_setparam
-       .llong .sys_sched_getparam      /* 155 */
-       .llong .sys_sched_setscheduler
-       .llong .sys_sched_getscheduler
-       .llong .sys_sched_yield
-       .llong .sys_sched_get_priority_max
-       .llong .sys_sched_get_priority_min  /* 160 */
-       .llong .sys_sched_rr_get_interval
-       .llong .sys_nanosleep
-       .llong .sys_mremap
-       .llong .sys_setresuid
-       .llong .sys_getresuid           /* 165 */
-       .llong .sys_ni_syscall          /* old query_module syscall */
-       .llong .sys_poll
-       .llong .sys_nfsservctl
-       .llong .sys_setresgid
-       .llong .sys_getresgid           /* 170 */
-       .llong .sys_prctl
-       .llong .ppc64_rt_sigreturn
-       .llong .sys_rt_sigaction
-       .llong .sys_rt_sigprocmask      
-       .llong .sys_rt_sigpending       /* 175 */
-       .llong .sys_rt_sigtimedwait
-       .llong .sys_rt_sigqueueinfo
-       .llong .ppc64_rt_sigsuspend
-       .llong .sys_pread64
-       .llong .sys_pwrite64            /* 180 */
-       .llong .sys_chown
-       .llong .sys_getcwd
-       .llong .sys_capget
-       .llong .sys_capset
-       .llong .sys_sigaltstack         /* 185 */
-       .llong .sys_sendfile64
-       .llong .sys_ni_syscall          /* reserved for streams1 */
-       .llong .sys_ni_syscall          /* reserved for streams2 */
-       .llong .ppc_vfork
-       .llong .sys_getrlimit           /* 190 */
-       .llong .sys_readahead
-       .llong .sys_ni_syscall          /* 32bit only mmap2 */
-       .llong .sys_ni_syscall          /* 32bit only truncate64 */
-       .llong .sys_ni_syscall          /* 32bit only ftruncate64 */
-       .llong .sys_ni_syscall          /* 195 - 32bit only stat64 */
-       .llong .sys_ni_syscall          /* 32bit only lstat64 */
-       .llong .sys_ni_syscall          /* 32bit only fstat64 */
-       .llong .sys_pciconfig_read
-       .llong .sys_pciconfig_write
-       .llong .sys_pciconfig_iobase    /* 200 - pciconfig_iobase */
-       .llong .sys_ni_syscall          /* reserved for MacOnLinux */
-       .llong .sys_getdents64
-       .llong .sys_pivot_root
-       .llong .sys_ni_syscall          /* 32bit only fcntl64 */
-       .llong .sys_madvise             /* 205 */
-       .llong .sys_mincore
-       .llong .sys_gettid
-       .llong .sys_tkill
-       .llong .sys_setxattr
-       .llong .sys_lsetxattr           /* 210 */
-       .llong .sys_fsetxattr
-       .llong .sys_getxattr
-       .llong .sys_lgetxattr
-       .llong .sys_fgetxattr
-       .llong .sys_listxattr           /* 215 */
-       .llong .sys_llistxattr
-       .llong .sys_flistxattr
-       .llong .sys_removexattr
-       .llong .sys_lremovexattr
-       .llong .sys_fremovexattr        /* 220 */
-       .llong .sys_futex
-       .llong .sys_sched_setaffinity
-       .llong .sys_sched_getaffinity
-       .llong .sys_ni_syscall
-       .llong .sys_ni_syscall          /* 225 - reserved for tux */
-       .llong .sys_ni_syscall          /* 32bit only sendfile64 */
-       .llong .sys_io_setup
-       .llong .sys_io_destroy
-       .llong .sys_io_getevents
-       .llong .sys_io_submit           /* 230 */
-       .llong .sys_io_cancel
-       .llong .sys_set_tid_address
-       .llong .sys_fadvise64
-       .llong .sys_exit_group
-       .llong .sys_lookup_dcookie      /* 235 */
-       .llong .sys_epoll_create
-       .llong .sys_epoll_ctl
-       .llong .sys_epoll_wait
-       .llong .sys_remap_file_pages
-       .llong .sys_timer_create        /* 240 */
-       .llong .sys_timer_settime
-       .llong .sys_timer_gettime
-       .llong .sys_timer_getoverrun
-       .llong .sys_timer_delete
-       .llong .sys_clock_settime       /* 245 */
-       .llong .sys_clock_gettime
-       .llong .sys_clock_getres
-       .llong .sys_clock_nanosleep
-       .llong .ppc64_swapcontext
-       .llong .sys_tgkill              /* 250 */
-       .llong .sys_utimes
-       .llong .sys_statfs64
-       .llong .sys_fstatfs64
-       .llong .sys_ni_syscall          /* 32bit only fadvise64_64 */
-       .llong .ppc_rtas                /* 255 */
-       .llong .sys_ni_syscall          /* 256 reserved for sys_debug_setcontext */
-       .llong .sys_ni_syscall          /* 257 reserved for vserver */
-       .llong .sys_ni_syscall          /* 258 reserved for new sys_remap_file_pages */
-       .llong .sys_mbind
-       .llong .sys_get_mempolicy       /* 260 */
-       .llong .sys_set_mempolicy
-       .llong .sys_mq_open
-       .llong .sys_mq_unlink
-       .llong .sys_mq_timedsend
-       .llong .sys_mq_timedreceive     /* 265 */
-       .llong .sys_mq_notify
-       .llong .sys_mq_getsetattr
-       .llong .sys_kexec_load
-       .llong .sys_add_key
-       .llong .sys_request_key         /* 270 */
-       .llong .sys_keyctl
-       .llong .sys_waitid
-       .llong .sys_ioprio_set
-       .llong .sys_ioprio_get
-       .llong .sys_inotify_init        /* 275 */
-       .llong .sys_inotify_add_watch
-       .llong .sys_inotify_rm_watch