On 03.01.2008 19:26, ron minnich wrote:
On Jan 3, 2008 10:20 AM, Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net wrote:
On 03.01.2008 18:50, ron minnich wrote:
Add a void * parameter to the LAR run functions; needed for some cases, in particular CAR.
I still do not like that because it works around a bug in our code. It should work just fine without that parameter.
I don't agree. There are limits on where the stack ends up in CAR. I would be more comfortable having the option of starting with a new function with a new stack once CAR is turned off.
A new stack would be OK, but not as a workaround for a bug. Being able to drop parts of the stack when CAR is disabled is an interesting feature, but I fear it will lead to a lot of headaches later on.
I still have some code pending which uses part of the stack as a printk buffer right from the beginning of stage1, making it available for inspection by later stages or even a payload. Sorry, can't find that code right now. I'll try to come up with a concept that works for architectures where we must move the stack as well as architectures where we don't want to move the stack.
That said, I will hold off and let others fix CAR. Let me know when it is ready and I will test on Alix.
Unfortunately, I do not have any Geode LX hardware, so I can't really test, but I can deliver patches. IIRC your problem was that the wbinvd only invalidated the CAR area without writing contents back to RAM, right?
However, please don't fix the problem by moving the stack. You can't relocate the stack in a general way due to things like pointers to auto.
I will find the root cause of the problem, and no, the fix will not involve moving the stack during runtime unless that is a hardware requirement.
Regards, Carl-Daniel