|
@@ -141,15 +141,16 @@ static int memcpy_real(void *dest, unsigned long src, size_t count)
|
|
|
|
|
|
if (count == 0)
|
|
if (count == 0)
|
|
return 0;
|
|
return 0;
|
|
- flags = __raw_local_irq_stnsm(0xf8); /* switch to real mode */
|
|
|
|
|
|
+ flags = __raw_local_irq_stnsm(0xf8UL); /* switch to real mode */
|
|
asm volatile (
|
|
asm volatile (
|
|
"0: mvcle %1,%2,0x0\n"
|
|
"0: mvcle %1,%2,0x0\n"
|
|
"1: jo 0b\n"
|
|
"1: jo 0b\n"
|
|
" lhi %0,0x0\n"
|
|
" lhi %0,0x0\n"
|
|
"2:\n"
|
|
"2:\n"
|
|
EX_TABLE(1b,2b)
|
|
EX_TABLE(1b,2b)
|
|
- : "+d" (rc)
|
|
|
|
- : "d" (_dest), "d" (_src), "d" (_len1), "d" (_len2)
|
|
|
|
|
|
+ : "+d" (rc), "+d" (_dest), "+d" (_src), "+d" (_len1),
|
|
|
|
+ "+d" (_len2), "=m" (*((long*)dest))
|
|
|
|
+ : "m" (*((long*)src))
|
|
: "cc", "memory");
|
|
: "cc", "memory");
|
|
__raw_local_irq_ssm(flags);
|
|
__raw_local_irq_ssm(flags);
|
|
|
|
|