Hi Jate,

On 08/10/10 01:59, Jate Sujjavanich wrote:
Should the bit fields in ptrace.h? So then it would be

#ifdef CONFIG_COLDFIRE
   unsigned format :  4; /* frame format specifier */
+  unsigned fault_status_H :  2;
-  unsigned vector : 8; /* vector offset */
+  unsigned vector : 12; /* vector offset */
+  unsigned fault_status_L :  2;
   unsigned short sr;
   unsigned long  pc;

It seems that there are implications in signal handling, though.

Yes, and that is partly why I was reluctant to change this.

And there is a much larger problem to deal with here. ptrace.h is
part of the user API (it is an exported header). But CONFIG_COLDFIRE
won't exist in the normal user space build process - it is a kernel
define. So in a sense any user-space user of ptrace.h on ColdFire
is not going to see these correct unless they manually defined
CONFIG_COLDFIRE... I guess there isn't too much user space code
that relies on these fields - otherwise they would be complaining :-)

Regards
Greg



-----Original Message-----
From: uclinux-dev-boun...@uclinux.org [mailto:uclinux-dev-boun...@uclinux.org] 
On Behalf Of Greg Ungerer
Sent: Thursday, October 07, 2010 3:28 AM
To: uClinux development list
Subject: Re: [uClinux-dev] Wrong exception handling on m68knommu Coldfire 5208?


Hi Alexander,

Sorry for the really slow response on this...


On 02/06/09 17:31, Alexander Stein wrote:
I'm experiencing several illegal instruction errors during execution
of some programs. Using a BDM debugger I got until the parsing of the
exception stack inside trap_c() (arch/m68knommu/kernel/traps.c) where I 
stumbled.
The exception vector is extracted as followed:
switch ((fp->ptregs.vector)>>   2)
The reference manual for Coldfire 5208 chapter 3.3.3.1 describe the following:
SSP Format(bits 31-28), FS[3:2](bits 27, 26), Vector(bits 25:18),
FS[1:0]
(bits 17, 16), Status Register (bits 15-0)
SSP + 0x4 Prgram Counter (bits 31-0)

In my opinion the vector extraction is wrong, because the vector is
defined with 12 Bits in size (see include/asm-m68knommu/ptrace.h)
including the Fault Status bits at each end of those 12 bits. By just
shifting 2 bits to the right you will still have FS[3:2] at the upper
end of ptregs.vector resulting in a wrong exception vector, if a bit
is set in FS[3:2] So I think the vector extraction has to be changed to 
something like that:
switch (((fp->ptregs.vector)>>   2)&   0xff)

Yes, you are absolutely correct.


With that change (at every occurrence) I get at least a bus error
instead (the kernel want to execute at address 0xffffffff, but that's
another problem) of illegal instruction, which seems to be a default exception 
handler.

I used uClinux-dist-20080808, but I noticed this lines of code didn't
change in uClinux-dist-20090520 and even linux-2.6. AFAIK the
exception stack is the same on Coldfire 5484 (V4e core with MMU).

Yes, I am pretty sure it is the same on all.

Attached is the patch I propose to push up-stream to fix this.

Regards
Greg


------------------------------------------------------------------------
Greg Ungerer  --  Principal Engineer        EMAIL:     g...@snapgear.com
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



************************************************************************************
This footnote confirms that this email message has been scanned by PineApp 
Mail-SeCure for the presence of malicious code, vandals&  computer viruses.
************************************************************************************



_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev



--
------------------------------------------------------------------------
Greg Ungerer  --  Principal Engineer        EMAIL:     g...@snapgear.com
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
_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

Reply via email to