I got some additional information after I sent the last mail.

I checked the address of regs->ARM_r8 where I declare the 'struct pt_regs regs'.
I checked the address of regs->ARM_r8 as soon as 'get_fiq_regs' is entered.
It matches in both places.

The hurting instruction from 'get_fiq_regs' is the following one:
stmia    %2, {r8- r14}

In the followin dump, you can see that this instruction is translated as 'stmia
r0, {r8 - r14}'.
(This dump was produced before I checked the address of regs->ARM_r8).

When I was cheking the address of regs->ARM_r8, this time the instruction got
translated into
'stmia    r4, {r8 - r14}', and the address of regs->ARM_r8 is 0xc0cf7f10.

In both of the cases, I can see that, the instruction 'stmia    %2, {r8 - r14}'
does not take the
value of '%2' correctly. Instead of that, it is using a value of 0x60000013, which
happens to be
the CPSR value.

-Umesh Puranik


umesh wrote:

> Russell King - ARM Linux Admin wrote:
>
> >
> > So, restore get_fiq_regs to its original version, cause the problem, and
> > send the oops, register dump, stack trace and code dump.
>
> =======================================================================
> Now going to call get_fiq_regs:
> Bad mode in data abort handler detected: mode FIQ_32
> Internal error: Oops: 0
> CPU: 0
> pc : [<c003fe14>]    lr : [<c00dc1d8>]
> sp : c0cf7e3c  ip : c0cf7e9c  fp : c0cf7e98
> r10: 02000194  r9 : ffffffff  r8 : c0da20e0
> r7 : d0002100  r6 : d0002240  r5 : d0002000  r4 : 00000000
> r3 : 600000d1  r2 : 00000000  r1 : 00000001  r0 : 60000013
> Flags: nZCv  IRQs off  FIQs off  Mode FIQ_32  Segment user
> Control: 017D  Table: C153C015  DAC: 00000015
> Process test (pid: 6, stackpage=c0cf7000)
> Stack:
> c0cf7e60:                                               c00dc1d8 c003fe14 60000
> c0cf7e80: ffffffff c0da20e0 ffffffff c0cf7f50  c0cf7e9c c00dc1d8 c003fe00 c0cbd
> c0cf7ea0: 00000001 c0cf7ed0 c0cf7eb4 c006ea0c  00000000 c0fd4d9c c0cf7f10 c0cf7
> c0cf7ec0: c0cf7ecc c0044900 c0044874 c0cf7f0c  c0cf7edc c00f0a04 c00448c8 c0fd4
> c0cf7ee0: c0da80e0 c0da8460 c0cf7f0c c0cf7ef8  c006791c c006cd74 c0da8460 00000
> c0cf7f00: c0cf7f40 c0cf7f10 c0067bd8 c0067874  c0cbd005 00000008 27cc4124 00000
> c0cf7f20: 00000002 00000003 c0cbd000 00000000  c0da20e0 c0fd4754 c0da8460 00000
> c0cf7f40: 00000000 c0cf7f6c c0cf7f54 c005f76c  c00dc0a8 c0da20e0 c0fd4754 00000
> c0cf7f60: c0cf7f90 c0cf7f70 c005e194 c005f720  00000003 00000002 00000000 c0cbd
> c0cf7f80: c0cf8000 c0cf7fb0 c0cf7f94 c005e2d4  c005e0b8 00000001 c003a648 00000
> c0cf7fa0: c0cf6000 00000000 c0cf7fb4 c003a4a0  c005e2a0 00000001 0202d8b8 00000
> c0cf7fc0: 00000000 00000000 00000001 bfffff64  020000c0 00000000 0202d8a0 00000
> c0cf7fe0: 02000194 bfffff30 bfffff34 bfffff1c  020001c4 02006004 60000010 0202d
> Backtrace:
> Function entered at [<c003fdf0>] from [<c00dc1d8>]
>   r9 = ffffffff
>   r8 = c0da20e0
> Function entered at [<c00dc098>] from [<c005f76c>]
>   r9 = 00000000
>   r8 = 00000000
>   r7 = c0da8460
>   r6 = c0fd4754
>   r5 = c0da20e0
>   r4 = 00000000
> Function entered at [<c005f710>] from [<c005e194>]
>   r6 = 00000000
>   r5 = c0fd4754
>   r4 = c0da20e0
> Function entered at [<c005e0a8>] from [<c005e2d4>]
>   r8 = c0cf8000
>   r7 = c0cbd000
>   r6 = 00000000
>   r5 = 00000002
>   r4 = 00000003
> Function entered at [<c005e290>] from [<c003a4a0>]
>   r7 = c0cf6000
>   r6 = 00000005
>   r5 = c003a648
>   r4 = 00000001
> Code: e129f003 e1a00000 (e8807f00) e129f000 e1a00000
> ===========================================================================
>
> -Umesh Puranik
>
> _______________________________________________
> http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm


_______________________________________________
http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm

Reply via email to