diff --git a/runtime/linux/loc2c-runtime.h b/runtime/linux/loc2c-runtime.h index a3bec58..7589026 100644 --- a/runtime/linux/loc2c-runtime.h +++ b/runtime/linux/loc2c-runtime.h @@ -589,10 +589,10 @@ extern void __store_deref_bad(void); else \ switch (size) \ { \ - case 1: __get_user_asm("ldrb", "%w", _v, (unsigned long)addr, _bad); break;\ - case 2: __get_user_asm("ldrh", "%w",_v, (unsigned long)addr, _bad); break;\ - case 4: __get_user_asm("ldr", "%w",_v, (unsigned long)addr, _bad); break;\ - case 8: __get_user_asm("ldr", "%",_v, (unsigned long)addr, _bad); break;\ + case 1: __get_user_asm("ldrb", "ldtrb", "%w", _v, (unsigned long)addr, _bad, ARM64_HAS_UAO); break; \ + case 2: __get_user_asm("ldrh", "ldtrh", "%w",_v, (unsigned long)addr, _bad, ARM64_HAS_UAO); break; \ + case 4: __get_user_asm("ldr", "ldtr", "%w",_v, (unsigned long)addr, _bad, ARM64_HAS_UAO); break; \ + case 8: __get_user_asm("ldr", "ldtr", "%",_v, (unsigned long)addr, _bad, ARM64_HAS_UAO); break; \ default: BUILD_BUG(); \ } \ pagefault_enable(); \ @@ -613,10 +613,10 @@ extern void __store_deref_bad(void); else \ switch (size) \ { \ - case 1: __put_user_asm("strb", "%w", ((u8)(value)), addr, _bad); break;\ - case 2: __put_user_asm("strh", "%w", ((u16)(value)), addr, _bad); break;\ - case 4: __put_user_asm("str", "%w", ((u32)(value)), addr, _bad); break;\ - case 8: __put_user_asm("str", "%", ((u64)(value)), addr, _bad); break;\ + case 1: __put_user_asm("strb", "sttrb", "%w", ((u8)(value)), addr, _bad, ARM64_HAS_UAO); break; \ + case 2: __put_user_asm("strh", "sttrh", "%w", ((u16)(value)), addr, _bad, ARM64_HAS_UAO); break; \ + case 4: __put_user_asm("str", "sttr", "%w", ((u32)(value)), addr, _bad, ARM64_HAS_UAO); break; \ + case 8: __put_user_asm("str", "sttr", "%", ((u64)(value)), addr, _bad, ARM64_HAS_UAO); break; \ default: BUILD_BUG(); \ } \ pagefault_enable(); \