|
@@ -1235,16 +1235,28 @@ __clear_user(void __user *addr, __kernel_size_t size)
|
|
|
{
|
|
|
__kernel_size_t res;
|
|
|
|
|
|
- might_fault();
|
|
|
- __asm__ __volatile__(
|
|
|
- "move\t$4, %1\n\t"
|
|
|
- "move\t$5, $0\n\t"
|
|
|
- "move\t$6, %2\n\t"
|
|
|
- __MODULE_JAL(__bzero)
|
|
|
- "move\t%0, $6"
|
|
|
- : "=r" (res)
|
|
|
- : "r" (addr), "r" (size)
|
|
|
- : "$4", "$5", "$6", __UA_t0, __UA_t1, "$31");
|
|
|
+ if (eva_kernel_access()) {
|
|
|
+ __asm__ __volatile__(
|
|
|
+ "move\t$4, %1\n\t"
|
|
|
+ "move\t$5, $0\n\t"
|
|
|
+ "move\t$6, %2\n\t"
|
|
|
+ __MODULE_JAL(__bzero_kernel)
|
|
|
+ "move\t%0, $6"
|
|
|
+ : "=r" (res)
|
|
|
+ : "r" (addr), "r" (size)
|
|
|
+ : "$4", "$5", "$6", __UA_t0, __UA_t1, "$31");
|
|
|
+ } else {
|
|
|
+ might_fault();
|
|
|
+ __asm__ __volatile__(
|
|
|
+ "move\t$4, %1\n\t"
|
|
|
+ "move\t$5, $0\n\t"
|
|
|
+ "move\t$6, %2\n\t"
|
|
|
+ __MODULE_JAL(__bzero)
|
|
|
+ "move\t%0, $6"
|
|
|
+ : "=r" (res)
|
|
|
+ : "r" (addr), "r" (size)
|
|
|
+ : "$4", "$5", "$6", __UA_t0, __UA_t1, "$31");
|
|
|
+ }
|
|
|
|
|
|
return res;
|
|
|
}
|