*参照元 [#cc25e2d5] #backlinks *説明 [#p3b4e0c9] -パス: [[linux-4.4.1/arch/arm64/include/asm/uaccess.h]] -FIXME: これは何? --説明 **引数 [#y7ebcb2e] -x -- -ptr -- -err -- **返り値 [#i80e98f9] -なし --関数ではない **参考 [#wd5bde2f] *実装 [#td22dfba] #define __put_user_err(x, ptr, err) \ do { \ __typeof__(*(ptr)) __pu_val = (x); \ __chk_user_ptr(ptr); \ - --[[linux-4.4.1/__chk_user_ptr()]] asm(ALTERNATIVE("nop", SET_PSTATE_PAN(0), ARM64_HAS_PAN, \ CONFIG_ARM64_PAN)); \ - --[[linux-4.4.1/ALTERNATIVE()]] switch (sizeof(*(ptr))) { \ case 1: \ __put_user_asm("strb", "%w", __pu_val, (ptr), (err)); \ break; \ case 2: \ __put_user_asm("strh", "%w", __pu_val, (ptr), (err)); \ break; \ case 4: \ __put_user_asm("str", "%w", __pu_val, (ptr), (err)); \ break; \ case 8: \ __put_user_asm("str", "%", __pu_val, (ptr), (err)); \ break; \ default: \ BUILD_BUG(); \ } \ - --[[linux-4.4.1/__put_user_asm()]] --[[linux-4.4.1/BUILD_BUG()]] asm(ALTERNATIVE("nop", SET_PSTATE_PAN(1), ARM64_HAS_PAN, \ CONFIG_ARM64_PAN)); \ } while (0) - --[[linux-4.4.1/SET_PSTATE_PAN()]] --[[linux-4.4.1/CONFIG_ARM64_PAN]] *コメント [#p7d1ba69]