My GCC version is 4.2.3. it seems that it is not too old. I believe
there is bad pointer arithmetic.
Here is the do_ade print:
do_ade, 542 address error exception occurs! MediaPlayerServ(pid:839)
(a0 == 7edff5b6 a1 == 302daaca a2 == 00000002 a3 == 302daaca)
(gp == 302e2730 sp == 7edff578 t9 == 2afb4640)
(epc == 302c3250, ra == 302c3388)
Suppose we can find which function cause "bad pointer arithmetic".
I am new to MIPS, anybody can tell me how i can find the function?
David VomLehn (dvomlehn) wrote:
> On Mon, Dec 21, 2009 at 02:47:22AM -0600, hermit wrote:
>> We are trying to run WEBkit on MIPS 24ke system.
>> we found a lot of "do_ade" print. but system doesn't crash.
>> because of do_ade print, the system performance seems poor.
>> I wonder if there is any compile flag can remove do_ade warning?
>> View this message in context:
>> Sent from the linux-mips main mailing list archive at Nabble.com.
> If you get messages from do_ade(), it means that your application is
> accessing data that is not aligned on a boundary that is a multiple
> of the size of the data. Accessing such unaligned data causes an exception
> that one would typically expect to kill your process. Fortunately, or
> unfortunately, depending on your view, the code that handles this
> can be configured to do one of three things:
> o Send a SIGBUS signal to your process, which generally kills it
> o Print a message and then emulate the unaligned load or store
> o Silently emulate the unaligned load or store
> It sounds like your system is configured for the print and emulate option.
> The emulation is quite a bit slower than a simple aligned load or store,
> so I am not surprised you are seeing noticable performance impact. The
> may be impacting your performance as it is printed sychronously, but even
> if you silence the warning, your performance will suffer.
> There are various ways that you can get unaligned accesses. One is to have
> code that does bad pointer arithmetic. Another possiblity, one that I
> encountered recently, is to have a bad gcc. IIRC gcc 4.1.0 had this
> Upgrading the version of gcc caused the problem to go away, but it wasn't
> really clear what bug fix did the job. Anyway, I know that verson 4.3.2
> works as you would expect.
> I strongly recommend, if you have an older gcc, that you upgrade. An
> instruction emulated through exception handling can easily be a hundred
> slower than that instruction operating on aligned data. If, however, you
> really only want to quiet the warning, you must first mount the debugfs
> filesystem: "mount -t debugfs debug /proc/sys/debug". Then write a zero to
> /proc/sys/debug/mips/unaligned_action, i.e.
> echo 0 >/proc/sys/debug/mips/unaligned_action.
> David VL
View this message in context:
Sent from the linux-mips main mailing list archive at Nabble.com.