> If you post a few lines of code, someone might spot the problem. I assume > you are getting SS$_ACCVIO as return? > So either return_va_64 or return_length_64 wasn't passed by reference (or > wasn't long enough but you'd have to be really lucky to pass in a 32-bit value > that sat at the very end of a page ...) >
Thanks. I have since managed to find the problem with that. But I do have a problem that with a successful creation of the section I don't seem to be accessing the right location. This is the code now: long long int startPhysicalAddress = 0x100000000; long long int endPhysicalAddress = 0x100100000; long long int regionId; __align (quadword) void *address; __align(quadword) long long int length; unsigned int pfn = startPhysicalAddress >> PAGE_SIZE; unsigned int pagesToMap = ((endPhysicalAddress - startPhysicalAddress) >> PAGE_SIZE) + 1; unsigned int flags = SEC$M_EXPREG | SEC$M_PFNMAP | SEC$M_WRT; int status; regionId = VA$C_P2; status = sys$crmpsc_pfn_64(®ionId, pfn, pagesToMap, PSL$C_USER, flags, &address, &length, 0); PrintStatus(status); flashbusIndexRegister = (unsigned int *)address; flashbusDataRegister = (unsigned int *)((char *)address + (endPhysicalAddress - startPhysicalAddress)); If I try to write to the index register by dereferencing flashbusIndexRegister the machine dies. Regards Rob