m68knommu : Fix strace support for 68328/68360
strace enabled is marked using the `flags' field of the `thread_info' struct.
68360 version of entry.S did test a wrong bit in a wrong structure
(task_struct).
68328 version of entry.S did test the right bit in the right structure,
but wrongly, because the `flags' field is 32 bit wide, while the used
assembler insn (btst) only accesses a 8 bit byte in memory.
Fix both using code already used in the coldfire version of entry.S
Signed-off-by: Philippe De Muyter <[email protected]>
---
diff --git a/arch/m68knommu/platform/68328/entry.S b/arch/m68knommu/platform/68328/entry.S
index 9d80d2c..74229f7 100644
--- a/arch/m68knommu/platform/68328/entry.S
+++ b/arch/m68knommu/platform/68328/entry.S
@@ -80,7 +80,7 @@ ENTRY(system_call)
movel %sp,%d1 /* get thread_info pointer */
andl #-THREAD_SIZE,%d1
movel %d1,%a2
- btst #TIF_SYSCALL_TRACE,%a2@(TI_FLAGS)
+ btst #(TIF_SYSCALL_TRACE%8),%a2@(TI_FLAGS+(31-TIF_SYSCALL_TRACE)/8)
jne do_trace
cmpl #NR_syscalls,%d0
jcc badsys
diff --git a/arch/m68knommu/platform/68360/entry.S b/arch/m68knommu/platform/68360/entry.S
index 6d3460a..d5ad408 100644
--- a/arch/m68knommu/platform/68360/entry.S
+++ b/arch/m68knommu/platform/68360/entry.S
@@ -71,7 +71,12 @@ ENTRY(system_call)
jbsr set_esp0
addql #4,%sp
- btst #PF_TRACESYS_BIT,%a2@(TASK_FLAGS+PF_TRACESYS_OFF)
+ movel %sp@(PT_OFF_ORIG_D0),%d0
+
+ movel %sp,%d1 /* get thread_info pointer */
+ andl #-THREAD_SIZE,%d1
+ movel %d1,%a2
+ btst #(TIF_SYSCALL_TRACE%8),%a2@(TI_FLAGS+(31-TIF_SYSCALL_TRACE)/8)
jne do_trace
cmpl #NR_syscalls,%d0
jcc badsys
--
Philippe De Muyter phdm at macqel dot be Tel +32 27029044
Macq Electronique SA rue de l'Aeronef 2 B-1140 Bruxelles Fax +32 27029077
Hi Philippe,
Philippe De Muyter wrote:
> m68knommu : Fix strace support for 68328/68360
>
> strace enabled is marked using the `flags' field of the `thread_info' struct.
> 68360 version of entry.S did test a wrong bit in a wrong structure
> (task_struct).
> 68328 version of entry.S did test the right bit in the right structure,
> but wrongly, because the `flags' field is 32 bit wide, while the used
> assembler insn (btst) only accesses a 8 bit byte in memory.
>
> Fix both using code already used in the coldfire version of entry.S
>
> Signed-off-by: Philippe De Muyter <[email protected]>
Thanks. I add that to the m68knommu git tree.
Regards
Greg
> ---
> diff --git a/arch/m68knommu/platform/68328/entry.S b/arch/m68knommu/platform/68328/entry.S
> index 9d80d2c..74229f7 100644
> --- a/arch/m68knommu/platform/68328/entry.S
> +++ b/arch/m68knommu/platform/68328/entry.S
> @@ -80,7 +80,7 @@ ENTRY(system_call)
> movel %sp,%d1 /* get thread_info pointer */
> andl #-THREAD_SIZE,%d1
> movel %d1,%a2
> - btst #TIF_SYSCALL_TRACE,%a2@(TI_FLAGS)
> + btst #(TIF_SYSCALL_TRACE%8),%a2@(TI_FLAGS+(31-TIF_SYSCALL_TRACE)/8)
> jne do_trace
> cmpl #NR_syscalls,%d0
> jcc badsys
> diff --git a/arch/m68knommu/platform/68360/entry.S b/arch/m68knommu/platform/68360/entry.S
> index 6d3460a..d5ad408 100644
> --- a/arch/m68knommu/platform/68360/entry.S
> +++ b/arch/m68knommu/platform/68360/entry.S
> @@ -71,7 +71,12 @@ ENTRY(system_call)
> jbsr set_esp0
> addql #4,%sp
>
> - btst #PF_TRACESYS_BIT,%a2@(TASK_FLAGS+PF_TRACESYS_OFF)
> + movel %sp@(PT_OFF_ORIG_D0),%d0
> +
> + movel %sp,%d1 /* get thread_info pointer */
> + andl #-THREAD_SIZE,%d1
> + movel %d1,%a2
> + btst #(TIF_SYSCALL_TRACE%8),%a2@(TI_FLAGS+(31-TIF_SYSCALL_TRACE)/8)
> jne do_trace
> cmpl #NR_syscalls,%d0
> jcc badsys
--
------------------------------------------------------------------------
Greg Ungerer -- Principal Engineer EMAIL: [email protected]
SnapGear Group, McAfee PHONE: +61 7 3435 2888
8 Gardner Close FAX: +61 7 3217 5323
Milton, QLD, 4064, Australia WEB: http://www.SnapGear.com