| From | Thomas Gleixner <> | Subject | Re: [RFC PATCH 12/25] kvx: Add system call support | Date | Mon, 09 Jan 2023 21:55:08 +0100 |
| |
On Tue, Jan 03 2023 at 17:43, Yann Sionneau wrote: > +/*********************************************************************** > +* Common exception return path > +***********************************************************************/ > +/** > + * Restore registers after exception > + * When entering this macro, $sp must be located right before regs > + * storage. > + */ > +EXCEPTION_ENTRY(return_from_exception) > +#ifdef CONFIG_DEBUG_EXCEPTION_STACK > + ld $r1 = 0[$sp] > + ;; > + sbfd $r1 = $r1, $sp > + ;; > + cb.deqz $r1, _check_ok > + ;; > + make $r2 = panic > + make $r0 = stack_error_panic_str_label > + ;; > + icall $r2 > + ;; > +_check_ok: > + addd $sp = $sp, STACK_REG_SIZE > + ;; > +#endif > + get $r11 = $sr > + /* Load sps value from saved registers */ > + ld $r6 = PT_SPS[$sp] > + ;; > + /* Disable interrupt to check task flags atomically */ > + disable_interrupt $r60 > + ;; > + /* Check PL bit of sps, if set, then it means we are returning > + * to a lower privilege level (ie to user), if so, we need to > + * check work pending. If coming from kernel, directly go to > + * register restoration */ > + cb.even $r6? _restore_regs > + ld $r1 = TASK_TI_FLAGS[$r11] > + ;; > + /* Do we have work pending ? */ > + andd $r5 = $r1, _TIF_WORK_MASK
Please use the generic entry code to handle pending work, tracing etc.
All over the place....
Thanks,
tglx
|