View Single Post
Posts: 3,074 | Thanked: 12,964 times | Joined on Mar 2010 @ Sofia,Bulgaria
#171
The bad news:
Seems the IBE bit in CortexA8 Auxiliary Control Register cannot be set outside secure world, so enabling CONFIG_ARM_ERRATA_430973 in kernel does absolutely nothing (besides executing few more instructions). I tried to set the bit in u-boot with the following code:

Code:
u32 actlr;
__asm__ volatile(
			 "mrc	p15, 0, %0, c1, c0, 1;"
			 "orr	%0, %0, #(1 << 6);"
			 "mcr	p15, 0, %0, c1, c0, 1;"
			 "mrc	p15, 0, %0, c1, c0, 1;"
			 :"=r"(actlr)
			 :
	      );
	printf("ACTLR 0x%08X\n",actlr);
and the result is 0x00000022 (L2EN=1, L1NEON=1) instead of 0x00000062(L2EN=1, L1NEON=1,IBE=1) .
If anyone finds an error in my code, please tell me, but i don't think it is incorrect.

The (maybe) good news:
It seems there is a function in CortexA8 secure monitor for setting the value of Auxiliary Control Register from outside secure world, it is used in kernel when CPU goes out of standby to restore the register contents. Have no idea if it will be useful, but will try these days.
 

The Following 11 Users Say Thank You to freemangordon For This Useful Post: