* Common Library Functions
*/
#include <acess.h>
+#include <hal_proc.h>
// === CONSTANTS ===
#define RANDOM_SEED 0xACE55052
*/
int CheckString(const char *String)
{
- if( !MM_GetPhysAddr( (tVAddr)String ) )
+ tVAddr addr;
+ int bUser;
+
+ addr = (tVAddr)String;
+
+ if( !MM_GetPhysAddr( addr ) )
return 0;
// Check 1st page
- if( MM_IsUser( (tVAddr)String ) )
+ bUser = MM_IsUser( addr );
+
+ while( *(char*)addr )
{
- // Traverse String
- while( *String )
+ if( (addr & (PAGE_SIZE-1)) == 0 )
{
- if( !MM_IsUser( (tVAddr)String ) )
+ if(bUser && !MM_IsUser(addr) )
return 0;
- // Increment string pointer
- String ++;
- }
- return 1;
- }
- else if( MM_GetPhysAddr( (tVAddr)String ) )
- {
- // Traverse String
- while( *String )
- {
- if( !MM_GetPhysAddr( (tVAddr)String ) )
+ if(!bUser && !MM_GetPhysAddr(addr) )
return 0;
- // Increment string pointer
- String ++;
}
- return 1;
+ addr ++;
}
- return 0;
+ return 1;
}
/**
*/
int CheckMem(const void *Mem, int NumBytes)
{
- tVAddr addr = (tVAddr)Mem;
-
- if( !MM_GetPhysAddr( addr ) )
- return 0;
-
- if( MM_IsUser( addr ) )
- {
- while( NumBytes-- )
- {
- if( !MM_IsUser( addr ) )
- return 0;
- addr ++;
- }
- return 1;
- }
- else if( MM_GetPhysAddr( addr ) )
- {
- while( NumBytes-- )
- {
- if( !MM_GetPhysAddr( addr ) )
- return 0;
- addr ++;
- }
- return 1;
- }
- return 0;
+ return MM_IsValidBuffer( (tVAddr)Mem, NumBytes );
}
/* *
* \}
char *dest = __dest;
const char *src = __src;
void *ret = __dest;
+
+ if( len == 0 || dest == src )
+ return dest;
if( (tVAddr)dest > (tVAddr)src + len )
return memcpy(dest, src, len);