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