/**
* \brief Check if a sized memory region is valid memory
+ * \return Boolean success
*/
int CheckMem(const void *Mem, int NumBytes)
{
tVAddr addr = (tVAddr)Mem;
+
+ if( !MM_GetPhysAddr( addr ) )
+ return 0;
if( MM_IsUser( addr ) )
{
if( (tVAddr)dest + len < (tVAddr)src )
return memcpy(dest, src, len);
+ // NOTE: Assumes memcpy works forward
+ if( (tVAddr)dest < (tVAddr)src )
+ return memcpy(dest, src, len);
+
if( (tVAddr)dest < (tVAddr)src )
block_size = (tVAddr)src - (tVAddr)dest;
else