patch-2.4.9 linux/arch/s390/kernel/entry.S
Next file: linux/arch/s390/kernel/process.c
Previous file: linux/arch/ppc/vmlinux.lds
Back to the patch index
Back to the overall index
- Lines: 90
- Date:
Sun Aug 12 10:38:47 2001
- Orig file:
v2.4.8/linux/arch/s390/kernel/entry.S
- Orig date:
Sun Aug 12 13:27:58 2001
diff -u --recursive --new-file v2.4.8/linux/arch/s390/kernel/entry.S linux/arch/s390/kernel/entry.S
@@ -81,7 +81,7 @@
sigpending = 8
need_resched = 24
tsk_ptrace = 28
-processor = 60
+processor = 56
/*
* Base Address of this Module --- saved in __LC_ENTRY_BASE
@@ -197,19 +197,10 @@
sysc_return:
tm SP_PSW+1(%r15),0x01 # returning to user ?
- bno BASED(sysc_leave) # no-> skip bottom half, resched & signal
-#
-# check, if bottom-half has to be done
-#
- l %r1,processor(%r9) # get cpu number from task struture
- sll %r1,L1_CACHE_SHIFT
- al %r1,BASED(.Lirq_stat) # get address of irq_stat
- icm %r0,15,0(%r1) # test irq_stat[#cpu].__softirq_pending
- bnz BASED(sysc_handle_bottom_half)
+ bno BASED(sysc_leave) # no-> skip resched & signal
#
# check, if reschedule is needed
#
-sysc_return_bh:
icm %r0,15,need_resched(%r9) # get need_resched from task_struct
bnz BASED(sysc_reschedule)
icm %r0,15,sigpending(%r9) # get sigpending from task_struct
@@ -248,15 +239,6 @@
#
-# call do_softirq and return from syscall, if interrupt-level
-# is zero
-#
-sysc_handle_bottom_half:
- l %r1,BASED(.Ldo_softirq)
- la %r14,BASED(sysc_return_bh)
- br %r1 # call do_softirq
-
-#
# call schedule with sysc_return as return-address
#
sysc_reschedule:
@@ -708,18 +690,19 @@
basr %r14,%r1 # branch to standard irq handler
io_return:
- tm SP_PSW+1(%r15),0x01 # returning to user ?
- bno BASED(io_leave) # no-> skip resched & signal
- stosm 24(%r15),0x03 # reenable interrupts
#
# check, if bottom-half has to be done
#
- l %r1,processor(%r9) # get cpu number from task struture
- sll %r1,L1_CACHE_SHIFT
- al %r1,BASED(.Lirq_stat) # get address of irq_stat
- icm %r0,15,0(%r1) # test irq_stat[#cpu].__softirq_pending
+ l %r1,processor(%r9) # get cpu number from task struture
+ sll %r1,L1_CACHE_SHIFT
+ al %r1,BASED(.Lirq_stat) # get address of irq_stat
+ icm %r0,15,0(%r1) # test irq_stat[#cpu].__softirq_pending
bnz BASED(io_handle_bottom_half)
-io_return_bh:
+io_return_bh:
+
+ tm SP_PSW+1(%r15),0x01 # returning to user ?
+ bno BASED(io_leave) # no-> skip resched & signal
+ stosm 24(%r15),0x03 # reenable interrupts
#
# check, if reschedule is needed
#
@@ -732,12 +715,11 @@
RESTORE_ALL
#
-# call do_softirq and return from syscall, if interrupt-level
-# is zero
+# call do_softirq
#
-io_handle_bottom_half:
+io_handle_bottom_half:
l %r1,BASED(.Ldo_softirq)
- la %r14,BASED(io_return_bh)
+ la %r14,BASED(io_return_bh)
br %r1 # call do_softirq
#
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)