• Home
  • Raw
  • Download

Lines Matching refs:u

140 	struct unwindme *u = unwindme;  in pgm_pre_handler()  local
142 u->ret = test_unwind(NULL, (u->flags & UWM_REGS) ? regs : NULL, in pgm_pre_handler()
143 (u->flags & UWM_SP) ? u->sp : 0); in pgm_pre_handler()
149 static noinline int unwindme_func4(struct unwindme *u) in unwindme_func4() argument
151 if (!(u->flags & UWM_CALLER)) in unwindme_func4()
152 u->sp = current_frame_address(); in unwindme_func4()
153 if (u->flags & UWM_THREAD) { in unwindme_func4()
154 complete(&u->task_ready); in unwindme_func4()
155 wait_event(u->task_wq, kthread_should_park()); in unwindme_func4()
159 } else if (u->flags & UWM_PGM) { in unwindme_func4()
163 unwindme = u; in unwindme_func4()
185 return u->ret; in unwindme_func4()
194 (u->flags & UWM_REGS) ? &regs : NULL, in unwindme_func4()
195 (u->flags & UWM_SP) ? u->sp : 0); in unwindme_func4()
200 static noinline int unwindme_func3(struct unwindme *u) in unwindme_func3() argument
202 u->sp = current_frame_address(); in unwindme_func3()
203 return unwindme_func4(u); in unwindme_func3()
207 static noinline int unwindme_func2(struct unwindme *u) in unwindme_func2() argument
212 if (u->flags & UWM_SWITCH_STACK) { in unwindme_func2()
215 rc = CALL_ON_STACK(unwindme_func3, S390_lowcore.nodat_stack, 1, u); in unwindme_func2()
220 return unwindme_func3(u); in unwindme_func2()
225 static noinline int unwindme_func1(void *u) in unwindme_func1() argument
227 return unwindme_func2((struct unwindme *)u); in unwindme_func1()
234 struct unwindme *u = READ_ONCE(unwindme); in unwindme_irq_handler() local
236 if (u && u->task == current) { in unwindme_irq_handler()
238 u->task = NULL; in unwindme_irq_handler()
239 u->ret = unwindme_func1(u); in unwindme_irq_handler()
243 static int test_unwind_irq(struct unwindme *u) in test_unwind_irq() argument
250 u->task = current; in test_unwind_irq()
251 unwindme = u; in test_unwind_irq()
255 return u->ret; in test_unwind_irq()
259 static int test_unwind_task(struct unwindme *u) in test_unwind_task() argument
265 init_completion(&u->task_ready); in test_unwind_task()
266 init_waitqueue_head(&u->task_wq); in test_unwind_task()
272 task = kthread_run(unwindme_func1, u, "%s", __func__); in test_unwind_task()
281 wait_for_completion(&u->task_ready); in test_unwind_task()
284 ret = test_unwind(task, NULL, (u->flags & UWM_SP) ? u->sp : 0); in test_unwind_task()
291 struct unwindme u; in test_unwind_flags() local
293 u.flags = flags; in test_unwind_flags()
294 if (u.flags & UWM_THREAD) in test_unwind_flags()
295 return test_unwind_task(&u); in test_unwind_flags()
296 else if (u.flags & UWM_IRQ) in test_unwind_flags()
297 return test_unwind_irq(&u); in test_unwind_flags()
299 return unwindme_func1(&u); in test_unwind_flags()