/linux-master/kernel/ |
H A D | rseq.c | 40 * init(rseq_cs) 42 * [1] TLS->rseq::rseq_cs = rseq_cs 58 * 1. Userspace stores the address of the struct rseq_cs assembly 59 * block descriptor into the rseq_cs field of the registered 70 * clears TLS->__rseq_abi::rseq_cs, and sets the user-space return 152 static int rseq_get_rseq_cs(struct task_struct *t, struct rseq_cs *rseq_cs) argument 154 struct rseq_cs __user *urseq_cs; 161 if (get_user(ptr, &t->rseq->rseq_cs)) 269 in_rseq_cs(unsigned long ip, struct rseq_cs *rseq_cs) argument 278 struct rseq_cs rseq_cs; local 352 struct rseq_cs rseq_cs; local [all...] |
/linux-master/tools/testing/selftests/rseq/ |
H A D | rseq-riscv-bits.h | 19 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) 34 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), 73 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) 91 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), 127 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) 141 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), 176 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) [all...] |
H A D | rseq-mips-bits.h | 25 /* Start rseq by storing table entry pointer into rseq_cs. */ 26 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) 47 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), 86 /* Start rseq by storing table entry pointer into rseq_cs. */ 87 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) 111 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), 149 /* Start rseq by storing table entry pointer into rseq_cs. */ 150 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) [all...] |
H A D | rseq-arm64-bits.h | 26 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) 41 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), 84 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) 102 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), 143 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) 157 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), 195 RSEQ_ASM_STORE_RSEQ_CS(2, 1b, rseq_cs) [all...] |
H A D | rseq-arm-bits.h | 25 /* Start rseq by storing table entry pointer into rseq_cs. */ 26 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) 49 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), 93 /* Start rseq by storing table entry pointer into rseq_cs. */ 94 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) 120 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), 163 /* Start rseq by storing table entry pointer into rseq_cs. */ 164 RSEQ_ASM_STORE_RSEQ_CS(1, 3f, rseq_cs) [all...] |
H A D | rseq-ppc-bits.h | 26 /* Start rseq by storing table entry pointer into rseq_cs. */ 27 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) 47 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), 91 /* Start rseq by storing table entry pointer into rseq_cs. */ 92 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) 118 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), 161 /* Start rseq by storing table entry pointer into rseq_cs. */ 162 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) [all...] |
H A D | rseq-s390-bits.h | 20 /* Start rseq by storing table entry pointer into rseq_cs. */ 21 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) 40 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), 88 /* Start rseq by storing table entry pointer into rseq_cs. */ 89 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) 113 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), 156 /* Start rseq by storing table entry pointer into rseq_cs. */ 157 RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs) [all...] |
H A D | rseq-ppc.h | 66 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ 73 "std %%r17, %[" __rseq_str(rseq_cs) "]\n\t" \ 126 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ 130 RSEQ_STORE_INT(rseq_cs) "%%r17, %[" __rseq_str(rseq_cs) "]\n\t" \
|
H A D | rseq-abi.h | 92 * Restartable sequences rseq_cs field. 95 * thread, or holds a pointer to the currently active struct rseq_cs. 98 * active rseq_cs at the beginning of assembly instruction sequence 102 * targeted by the rseq_cs. Also needs to be set to NULL by user-space 103 * before reclaiming memory that contains the targeted struct rseq_cs. 128 } rseq_cs; member in struct:rseq_abi
|
H A D | rseq-x86.h | 29 /* Offset of cpu_id, rseq_cs, and mm_cid fields in struct rseq. */ 88 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ 91 "movq %%rax, " __rseq_str(rseq_cs) "\n\t" \ 175 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ 177 "movl $" __rseq_str(cs_label) ", " __rseq_str(rseq_cs) "\n\t" \
|
H A D | rseq-arm.h | 111 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ 114 "str r0, %[" __rseq_str(rseq_cs) "]\n\t" \
|
H A D | rseq-s390.h | 107 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ 110 LONG_S " %%r0, %[" __rseq_str(rseq_cs) "]\n\t" \
|
H A D | rseq-arm64.h | 125 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ 130 " str " RSEQ_ASM_TMP_REG ", %[" __rseq_str(rseq_cs) "]\n" \
|
H A D | rseq-mips.h | 115 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ 118 LONG_S " $4, %[" __rseq_str(rseq_cs) "]\n\t" \
|
H A D | rseq-riscv.h | 83 #define RSEQ_ASM_STORE_RSEQ_CS(label, cs_label, rseq_cs) \ 86 REG_S RSEQ_ASM_TMP_REG_1 ", %[" __rseq_str(rseq_cs) "]\n" \
|
H A D | rseq.h | 220 RSEQ_WRITE_ONCE(rseq_get_abi()->rseq_cs.arch.ptr, 0); 227 * rseq_cs) or the code referred to by the struct rseq_cs start_ip and 231 * holding the struct rseq_cs or reclaim of the code pointed to by struct 232 * rseq_cs start_ip and post_commit_offset fields.
|
/linux-master/include/uapi/linux/ |
H A D | rseq.h | 41 * struct rseq_cs is aligned on 4 * 8 bytes to ensure it is always 45 struct rseq_cs { struct 92 * Restartable sequences rseq_cs field. 95 * thread, or holds a pointer to the currently active struct rseq_cs. 98 * active rseq_cs at the beginning of assembly instruction sequence 102 * targeted by the rseq_cs. Also needs to be set to NULL by user-space 103 * before reclaiming memory that contains the targeted struct rseq_cs. 110 * rseq_cs field, leaving the high order bits initialized to 0. 112 __u64 rseq_cs; member in struct:rseq
|