cmpw 0,r3,r5
beqlr
/* are we enabling interrupts? */
- cmpi 0,r3,0
+ 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) */
- CHECKANYINT(r4,r5)
+ ld r4,PACALPPACA+LPPACAANYINT(r13)
+ cmpdi r4,0
beqlr
- /*
+ /*
* Handle pending interrupts in interrupt context
*/
li r0,0x5555
blr
#endif /* CONFIG_PPC_ISERIES */
+#ifdef CONFIG_IRQSTACKS
+_GLOBAL(call_do_softirq)
+ mflr r0
+ std r0,16(r1)
+ stdu r1,THREAD_SIZE-112(r3)
+ mr r1,r3
+ bl .__do_softirq
+ ld r1,0(r1)
+ ld r0,16(r1)
+ mtlr r0
+ blr
+
+_GLOBAL(call_handle_irq_event)
+ mflr r0
+ std r0,16(r1)
+ stdu r1,THREAD_SIZE-112(r6)
+ mr r1,r6
+ bl .handle_irq_event
+ ld r1,0(r1)
+ ld r0,16(r1)
+ mtlr r0
+ blr
+#endif /* CONFIG_IRQSTACKS */
+
/*
* Flush instruction cache.
*/
eieio
stbu r5,1(r4)
bdnz 00b
+ twi 0,r5,0
+ isync
blr
_GLOBAL(_outsb)
blelr-
00: lbzu r5,1(r4)
stb r5,0(r3)
- eieio
bdnz 00b
+ sync
blr
_GLOBAL(_insw)
eieio
sthu r5,2(r4)
bdnz 00b
+ twi 0,r5,0
+ isync
blr
_GLOBAL(_outsw)
subi r4,r4,2
blelr-
00: lhzu r5,2(r4)
- eieio
sthbrx r5,0,r3
bdnz 00b
+ sync
blr
_GLOBAL(_insl)
eieio
stwu r5,4(r4)
bdnz 00b
+ twi 0,r5,0
+ isync
blr
_GLOBAL(_outsl)
blelr-
00: lwzu r5,4(r4)
stwbrx r5,0,r3
- eieio
bdnz 00b
+ sync
blr
/* _GLOBAL(ide_insw) now in drivers/ide/ide-iops.c */
eieio
sthu r5,2(r4)
bdnz 00b
+ twi 0,r5,0
+ isync
blr
/* _GLOBAL(ide_outsw) now in drivers/ide/ide-iops.c */
blelr-
00: lhzu r5,2(r4)
sth r5,0(r3)
- eieio
bdnz 00b
+ sync
blr
_GLOBAL(_insl_ns)
eieio
stwu r5,4(r4)
bdnz 00b
+ twi 0,r5,0
+ isync
blr
_GLOBAL(_outsl_ns)
blelr-
00: lwzu r5,4(r4)
stw r5,0(r3)
- eieio
bdnz 00b
+ sync
blr
_GLOBAL(abs)
_GLOBAL(sys_call_table32)
.llong .sys_restart_syscall /* 0 */
.llong .sys_exit
- .llong .sys_fork
+ .llong .ppc_fork
.llong .sys_read
.llong .sys_write
.llong .sys32_open /* 5 */
.llong .sys32_ssetmask
.llong .sys_setreuid /* 70 */
.llong .sys_setregid
- .llong .sys32_sigsuspend
+ .llong .ppc32_sigsuspend
.llong .compat_sys_sigpending
.llong .sys32_sethostname
.llong .compat_sys_setrlimit /* 75 */
.llong .sys32_ipc
.llong .sys_fsync
.llong .ppc32_sigreturn
- .llong .sys_clone /* 120 */
+ .llong .ppc_clone /* 120 */
.llong .sys32_setdomainname
.llong .ppc64_newuname
.llong .sys_ni_syscall /* old modify_ldt syscall */
.llong .ppc32_select
.llong .sys_flock
.llong .sys_msync
- .llong .sys32_readv /* 145 */
- .llong .sys32_writev
+ .llong .compat_sys_readv /* 145 */
+ .llong .compat_sys_writev
.llong .sys32_getsid
.llong .sys_fdatasync
.llong .sys32_sysctl
.llong .sys_getresuid /* 165 */
.llong .sys_ni_syscall /* old query_module syscall */
.llong .sys_poll
- .llong .sys32_nfsservctl
+ .llong .compat_sys_nfsservctl
.llong .sys_setresgid
.llong .sys_getresgid /* 170 */
.llong .sys32_prctl
.llong .sys32_rt_sigpending /* 175 */
.llong .sys32_rt_sigtimedwait
.llong .sys32_rt_sigqueueinfo
- .llong .sys32_rt_sigsuspend
+ .llong .ppc32_rt_sigsuspend
.llong .sys32_pread64
.llong .sys32_pwrite64 /* 180 */
.llong .sys_chown
.llong .sys32_sendfile
.llong .sys_ni_syscall /* reserved for streams1 */
.llong .sys_ni_syscall /* reserved for streams2 */
- .llong .sys_vfork
+ .llong .ppc_vfork
.llong .compat_sys_getrlimit /* 190 */
.llong .sys32_readahead
.llong .sys32_mmap2
.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_vserver
.llong .sys_ni_syscall /* 258 reserved for new sys_remap_file_pages */
.llong .sys_ni_syscall /* 259 reserved for new sys_mbind */
.llong .sys_ni_syscall /* 260 reserved for new sys_get_mempolicy */
.llong .compat_sys_mq_timedreceive /* 265 */
.llong .compat_sys_mq_notify
.llong .compat_sys_mq_getsetattr
+ .llong .sys_ni_syscall /* 268 reserved for sys_kexec_load */
.balign 8
_GLOBAL(sys_call_table)
.llong .sys_restart_syscall /* 0 */
.llong .sys_exit
- .llong .sys_fork
+ .llong .ppc_fork
.llong .sys_read
.llong .sys_write
.llong .sys_open /* 5 */
.llong .sys_ipc
.llong .sys_fsync
.llong .sys_ni_syscall
- .llong .sys_clone /* 120 */
+ .llong .ppc_clone /* 120 */
.llong .sys_setdomainname
.llong .ppc64_newuname
.llong .sys_ni_syscall /* old modify_ldt syscall */
.llong .sys_rt_sigpending /* 175 */
.llong .sys_rt_sigtimedwait
.llong .sys_rt_sigqueueinfo
- .llong .sys_rt_sigsuspend
+ .llong .ppc64_rt_sigsuspend
.llong .sys_pread64
.llong .sys_pwrite64 /* 180 */
.llong .sys_chown
.llong .sys_capget
.llong .sys_capset
.llong .sys_sigaltstack /* 185 */
- .llong .sys_sendfile
+ .llong .sys_sendfile64
.llong .sys_ni_syscall /* reserved for streams1 */
.llong .sys_ni_syscall /* reserved for streams2 */
- .llong .sys_vfork
+ .llong .ppc_vfork
.llong .sys_getrlimit /* 190 */
.llong .sys_readahead
.llong .sys_ni_syscall /* 32bit only mmap2 */
.llong .sys_mq_timedreceive /* 265 */
.llong .sys_mq_notify
.llong .sys_mq_getsetattr
+ .llong .sys_ni_syscall /* 268 reserved for sys_kexec_load */