Lines Matching refs:regs

172 extern unsigned long profile_pc(struct pt_regs *regs);
174 #define profile_pc(regs) instruction_pointer(regs) argument
177 long do_syscall_trace_enter(struct pt_regs *regs);
178 void do_syscall_trace_leave(struct pt_regs *regs);
188 static inline void regs_set_return_ip(struct pt_regs *regs, unsigned long ip) in regs_set_return_ip() argument
190 regs->nip = ip; in regs_set_return_ip()
194 static inline void regs_set_return_msr(struct pt_regs *regs, unsigned long msr) in regs_set_return_msr() argument
196 regs->msr = msr; in regs_set_return_msr()
200 static inline void regs_add_return_ip(struct pt_regs *regs, long offset) in regs_add_return_ip() argument
202 regs_set_return_ip(regs, regs->nip + offset); in regs_add_return_ip()
205 static inline unsigned long instruction_pointer(struct pt_regs *regs) in instruction_pointer() argument
207 return regs->nip; in instruction_pointer()
210 static inline void instruction_pointer_set(struct pt_regs *regs, in instruction_pointer_set() argument
213 regs_set_return_ip(regs, val); in instruction_pointer_set()
216 static inline unsigned long user_stack_pointer(struct pt_regs *regs) in user_stack_pointer() argument
218 return regs->gpr[1]; in user_stack_pointer()
221 static inline unsigned long frame_pointer(struct pt_regs *regs) in frame_pointer() argument
226 #define user_mode(regs) (((regs)->msr & MSR_PR) != 0) argument
250 #define IS_CRITICAL_EXC(regs) (((regs)->trap & 2) != 0) argument
251 #define IS_MCHECK_EXC(regs) (((regs)->trap & 4) != 0) argument
252 #define IS_DEBUG_EXC(regs) (((regs)->trap & 8) != 0) argument
254 #define TRAP(regs) ((regs)->trap & ~TRAP_FLAGS_MASK) argument
256 static __always_inline void set_trap(struct pt_regs *regs, unsigned long val) in set_trap() argument
258 regs->trap = (regs->trap & TRAP_FLAGS_MASK) | (val & ~TRAP_FLAGS_MASK); in set_trap()
261 static inline bool trap_is_scv(struct pt_regs *regs) in trap_is_scv() argument
263 return (IS_ENABLED(CONFIG_PPC_BOOK3S_64) && TRAP(regs) == 0x3000); in trap_is_scv()
266 static inline bool trap_is_unsupported_scv(struct pt_regs *regs) in trap_is_unsupported_scv() argument
268 return IS_ENABLED(CONFIG_PPC_BOOK3S_64) && TRAP(regs) == 0x7ff0; in trap_is_unsupported_scv()
271 static inline bool trap_is_syscall(struct pt_regs *regs) in trap_is_syscall() argument
273 return (trap_is_scv(regs) || TRAP(regs) == 0xc00); in trap_is_syscall()
276 static inline bool trap_norestart(struct pt_regs *regs) in trap_norestart() argument
278 return regs->trap & 0x1; in trap_norestart()
281 static __always_inline void set_trap_norestart(struct pt_regs *regs) in set_trap_norestart() argument
283 regs->trap |= 0x1; in set_trap_norestart()
286 #define kernel_stack_pointer(regs) ((regs)->gpr[1]) argument
287 static inline int is_syscall_success(struct pt_regs *regs) in is_syscall_success() argument
289 if (trap_is_scv(regs)) in is_syscall_success()
290 return !IS_ERR_VALUE((unsigned long)regs->gpr[3]); in is_syscall_success()
292 return !(regs->ccr & 0x10000000); in is_syscall_success()
295 static inline long regs_return_value(struct pt_regs *regs) in regs_return_value() argument
297 if (trap_is_scv(regs)) in regs_return_value()
298 return regs->gpr[3]; in regs_return_value()
300 if (is_syscall_success(regs)) in regs_return_value()
301 return regs->gpr[3]; in regs_return_value()
303 return -regs->gpr[3]; in regs_return_value()
306 static inline void regs_set_return_value(struct pt_regs *regs, unsigned long rc) in regs_set_return_value() argument
308 regs->gpr[3] = rc; in regs_set_return_value()
316 static inline bool regs_is_unrecoverable(struct pt_regs *regs) in regs_is_unrecoverable() argument
318 return unlikely(cpu_has_msr_ri() && !(regs->msr & MSR_RI)); in regs_is_unrecoverable()
321 static inline void regs_set_recoverable(struct pt_regs *regs) in regs_set_recoverable() argument
324 regs_set_return_msr(regs, regs->msr | MSR_RI); in regs_set_recoverable()
327 static inline void regs_set_unrecoverable(struct pt_regs *regs) in regs_set_unrecoverable() argument
330 regs_set_return_msr(regs, regs->msr & ~MSR_RI); in regs_set_unrecoverable()
356 static inline unsigned long regs_get_register(struct pt_regs *regs, in regs_get_register() argument
361 return *(unsigned long *)((unsigned long)regs + offset); in regs_get_register()
373 static inline bool regs_within_kernel_stack(struct pt_regs *regs, in regs_within_kernel_stack() argument
377 (kernel_stack_pointer(regs) & ~(THREAD_SIZE - 1))); in regs_within_kernel_stack()
389 static inline unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs, in regs_get_kernel_stack_nth() argument
392 unsigned long *addr = (unsigned long *)kernel_stack_pointer(regs); in regs_get_kernel_stack_nth()
394 if (regs_within_kernel_stack(regs, (unsigned long)addr)) in regs_get_kernel_stack_nth()