Merge branch 'master' of git.lfbs.rwth-aachen.de:metalsvm into mailbox_integration

This commit is contained in:
Simon Pickartz 2011-08-18 13:58:16 -07:00
commit 105cc84303
4 changed files with 22 additions and 5 deletions

View file

@ -41,8 +41,8 @@
void* iRCCE_memcpy_get(void *dest, const void *src, size_t count)
{
#ifdef COPPERRIDGE
return memcpy_from_mpb(dest, src, count);
#if defined(COPPERRIDGE) || defined(SCC)
return memcpy_get(dest, src, count);
#else
return memcpy(dest, src, count);
#endif

View file

@ -41,8 +41,8 @@
void* iRCCE_memcpy_put(void *dest, const void *src, size_t count)
{
#ifdef COPPERRIDGE
return memcpy_to_mpb(dest, src, count);
#if defined(COPPERRIDGE) || defined(SCC)
return memcpy_put(dest, src, count);
#else
return memcpy(dest, src, count);
#endif

View file

@ -90,7 +90,23 @@ inline static void *memcpy_get(void *dest, const void *src, size_t count)
* In our kernel, we didn't want to use FPU registers.
* Therefore, we use standard memcpy routine
*/
#define memcpy_put memcpy
inline static void *memcpy_put(void* dest, const void *src, size_t count)
{
int32_t i, j, k;
if (BUILTIN_EXPECT(!dest || !src, 0))
return dest;
asm volatile (
"cld; rep movsl\n\t"
"movl %4, %%ecx\n\t"
"andl $3, %%ecx\n\t"
"rep movsb\n\t"
: "=&c"(i), "=&D"(j), "=&S"(k)
: "0"(count/4), "g"(count), "1"(dest), "2"(src) : "memory");
return dest;
}
#else
/** @brief Fast procedure to get a byte range from on-die memory into RAM.
*

View file

@ -60,6 +60,7 @@ extern "C" {
// RCCE specific flags
#define SCC
#define COPPERRIDGE
#define MS_BAREMETAL
//#define GORY
#define SHMADD