*参照元 [#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]


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS