patch-2.4.0-test2 linux/arch/sh/kernel/entry.S
Next file: linux/arch/sh/kernel/io_hd64461.c
Previous file: linux/arch/sh/kernel/cf-enabler.c
Back to the patch index
Back to the overall index
- Lines: 274
- Date:
Mon Jun 19 17:59:37 2000
- Orig file:
v2.4.0-test1/linux/arch/sh/kernel/entry.S
- Orig date:
Tue May 23 15:31:34 2000
diff -u --recursive --new-file v2.4.0-test1/linux/arch/sh/kernel/entry.S linux/arch/sh/kernel/entry.S
@@ -52,8 +52,9 @@
flags = 4
sigpending = 8
need_resched = 20
+tsk_ptrace = 60
-PF_TRACESYS = 0x00000020
+PT_TRACESYS = 0x00000002
PF_USEDFPU = 0x00100000
ENOSYS = 38
@@ -127,7 +128,7 @@
or $r11, $r10; \
ldc $r10, $sr
- .balign 4
+ .align 2
tlb_miss_load:
mov.l 2f, $r0
mov.l @$r0, $r6
@@ -137,7 +138,7 @@
jmp @$r0
mov #0, $r5
- .balign 4
+ .align 2
tlb_miss_store:
mov.l 2f, $r0
mov.l @$r0, $r6
@@ -147,7 +148,7 @@
jmp @$r0
mov #1, $r5
- .balign 4
+ .align 2
initial_page_write:
mov.l 2f, $r0
mov.l @$r0, $r6
@@ -157,7 +158,7 @@
jmp @$r0
mov #1, $r5
- .balign 4
+ .align 2
tlb_protection_violation_load:
mov.l 2f, $r0
mov.l @$r0, $r6
@@ -167,7 +168,7 @@
jmp @$r0
mov #0, $r5
- .balign 4
+ .align 2
tlb_protection_violation_store:
mov.l 2f, $r0
mov.l @$r0, $r6
@@ -177,14 +178,14 @@
jmp @$r0
mov #1, $r5
- .balign 4
+ .align 2
1: .long SYMBOL_NAME(do_page_fault)
2: .long MMU_TEA
#ifdef CONFIG_DEBUG_KERNEL_WITH_GDB_STUB
- .balign 4
+ .align 2
/* Unwind the stack and jmp to the debug entry */
-debug:
+debug_kernel:
mov.l @$r15+, $r0
mov.l @$r15+, $r1
mov.l @$r15+, $r2
@@ -216,19 +217,36 @@
mov.l 2f, $k0
jmp @$k0
ldc $k1, $ssr
- .balign 4
+ .align 2
1: .long 0x300000f0
2: .long 0xa0000100
#endif
- .balign 4
+ .align 2
+debug_trap:
+#ifdef CONFIG_DEBUG_KERNEL_WITH_GDB_STUB
+ mov #SR, $r0
+ mov.l @($r0,$r15), $r0 ! get status register
+ shll $r0
+ shll $r0 ! kernel space?
+ bt/s debug_kernel
+#endif
+ mov.l @$r15, $r0
+ mov.l 1f, $r8
+ jmp @$r8
+ nop
+
+ .align 2
+1: .long SYMBOL_NAME(break_point_trap_software)
+
+ .align 2
error:
!
STI()
mov.l 1f, $r0
jmp @$r0
nop
- .balign 4
+ .align 2
1: .long SYMBOL_NAME(do_exception_error)
badsys: mov #-ENOSYS, $r0
@@ -263,13 +281,11 @@
mov.l 1f, $r9
mov.l @$r9, $r8
!
-#ifdef CONFIG_DEBUG_KERNEL_WITH_GDB_STUB
mov #0x20, $r9
extu.b $r9, $r9
shll2 $r9
cmp/hs $r9, $r8
- bt debug
-#endif
+ bt debug_trap
!
mov #SYSCALL_NR, $r14
add $r15, $r14
@@ -311,16 +327,34 @@
bt 7b
#endif
0: stc $k_current, $r11
- mov.l @(flags,$r11), $r10 ! Is it trace?
- mov #PF_TRACESYS, $r11
+ mov.l @(tsk_ptrace,$r11), $r10 ! Is it trace?
+ mov #PT_TRACESYS, $r11
tst $r11, $r10
bt 5f
! Trace system call
mov #-ENOSYS, $r11
mov.l $r11, @(R0,$r15)
+ ! Push up $R0--$R2, and $R4--$R7
+ mov.l $r0, @-$r15
+ mov.l $r1, @-$r15
+ mov.l $r2, @-$r15
+ mov.l $r4, @-$r15
+ mov.l $r5, @-$r15
+ mov.l $r6, @-$r15
+ mov.l $r7, @-$r15
+ !
mov.l 2f, $r11
jsr @$r11
nop
+ ! Pop down $R0--$R2, and $R4--$R7
+ mov.l @$r15+, $r7
+ mov.l @$r15+, $r6
+ mov.l @$r15+, $r5
+ mov.l @$r15+, $r4
+ mov.l @$r15+, $r2
+ mov.l @$r15+, $r1
+ mov.l @$r15+, $r0
+ !
mov.l __syscall_ret_trace, $r10
bra 6f
lds $r10, $pr
@@ -337,7 +371,7 @@
nop
! In case of trace
- .balign 4
+ .align 2
3:
#ifdef COMPAT_OLD_SYSCALL_ABI
add $r8, $r15 ! pop off the arguments
@@ -347,7 +381,7 @@
mova SYMBOL_NAME(ret_from_syscall), $r0
jmp @$r1
lds $r0, $pr
- .balign 4
+ .align 2
1: .long TRA
2: .long SYMBOL_NAME(syscall_trace)
__n_sys: .long NR_syscalls
@@ -366,18 +400,18 @@
.previous
.section __ex_table, "a"
- .balign 4
+ .align 2
.long 4b,fixup_syscall_argerr
.previous
#endif
- .balign 4
+ .align 2
reschedule:
mova SYMBOL_NAME(ret_from_syscall), $r0
mov.l 1f, $r1
jmp @$r1
lds $r0, $pr
- .balign 4
+ .align 2
1: .long SYMBOL_NAME(schedule)
ENTRY(ret_from_irq)
@@ -401,11 +435,11 @@
STI()
bra ret_from_syscall
nop
- .balign 4
+ .align 2
__INV_IMASK:
.long 0xffffff0f ! ~(IMASK)
- .balign 4
+ .align 2
syscall_ret:
#ifdef COMPAT_OLD_SYSCALL_ABI
add $r8, $r15 ! pop off the arguments
@@ -438,7 +472,7 @@
mova restore_all, $r0
jmp @$r1
lds $r0, $pr
- .balign 4
+ .align 2
__do_signal:
.long SYMBOL_NAME(do_signal)
__softirq_state:
@@ -446,7 +480,7 @@
__do_softirq:
.long SYMBOL_NAME(do_softirq)
- .balign 4
+ .align 2
restore_all:
#if defined(__SH4__)
mov.l __fpu_prepare_fd, $r0
@@ -554,7 +588,7 @@
rte
nop
- .balign 4
+ .align 2
__blrb_flags: .long 0x30000000
#if defined(__SH4__)
__fpu_prepare_fd:
@@ -582,7 +616,7 @@
mov.l 2f, $k3
bra handle_exception
mov.l @$k2, $k2
- .balign 4
+ .align 2
2: .long SYMBOL_NAME(ret_from_exception)
1: .long EXPEVT
!
@@ -601,7 +635,7 @@
bra handle_exception
mov.l @$k2, $k2
- .balign 4
+ .align 2
1: .long EXPEVT
2: .long INTEVT
3: .long SYMBOL_NAME(ret_from_irq)
@@ -707,7 +741,7 @@
mov.l @$r9, $r9
jmp @$r9
nop
- .balign 4
+ .align 2
1: .long SYMBOL_NAME(exception_handling_table)
2: .long 0x00008000 ! FD=1
3: .long 0x000000f0 ! FD=0, IMASK=15
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)