Hello,

I'm trying to modify BSP for Motorola DragonBall MXL so it can run in USER
mode (now it can run
only in Kernel mode).
I'm fixed some memory access violation exceptions (caused by access to not
allocated memory), but now I'm stuck in exceptions like this:

Data Abort: Thread=8bf9d000 Proc=88fb8ee8 'device.exe'
AKY=00000009 PC=032d26f8 RA=032d2994 BVA=080b0124 FSR=0000000a

Exceptions like that are caused by access (read or write) to registers, for
example GPIO registers.
Memory for registers is allocated using VirtualAlloc + VirtualCopy.
Here is an example how I allocate memory (code from LCD driver):

gpLCDC = (TLCDC_Reg*) VirtualAlloc(0, sizeof(TLCDC_Reg), MEM_RESERVE,
PAGE_NOACCESS);
if (gpLCDC == NULL)
{
ERRORMSG(DISPLAY_ERROR_MSG, (TEXT("DispDrvrInitialize: VirtualAlloc
failed!\r\n")));
return;
}
else
{
if (!VirtualCopy((PVOID)gpLCDC, (PVOID)(LCDC_Reg_Virtual_Address),
sizeof(TLCDC_Reg), (PAGE_READWRITE | PAGE_NOCACHE)))
{
ERRORMSG(DISPLAY_ERROR_MSG, (TEXT("DispDrvrInitialize: VirtualCopy
failed!\r\n")));
return;
}
}

Address space occupied by registry is listed in OEMAddressTable as follow:
DCD 0x80200000, 0x00200000, 1 ; 1 MB Internal register


Do you have any idea what can cause that exceptions ?