Hiroshi san,
What was the original complaint? If I understand correctly, the problem
was this:
==========
cmd_que_allocate() - returns an un-aligned pointer.
==========
Is that correct? If so - the cause, and solution is utterly simple, and
is as follows:
The solution is to *ROUND*UP* all requests to an alignment size.
For example:
If the request is for 13 bytes, the request should be rounded to 16 bytes
This should be done at the start/top of the allocation routine.
The cause of the alignment error is an earlier *ODD* size allocation.
The memory request *NEXT* will be mis-aligned.
Walk through the code - request first 20 bytes, then 5 bytes, then 20 bytes.
By simply at the top of "cmd_que_allocate()" - rounding up the
allocation size.. the problem is solved.
For *ARM* - alignment is 4byte - this one line fix should be ok.
size = (size + 3) & (~3);
Perhaps - with newer platforms (ie: The 64bit - AMD) we should as policy
in the code - align to 16bytes?
Please try the above and let me know what you find.
-Duane.
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development