Thread (22 messages) 22 messages, 4 authors, 2020-09-28

Re: [PATCH 4/9] ARM: syscall: always store thread_info->syscall

From: Linus Walleij <hidden>
Date: 2020-09-28 09:41:39
Also in: linux-arch, lkml

Hi Arnd,

help me out here because I feel vaguely stupid...

On Mon, Sep 7, 2020 at 5:38 PM Arnd Bergmann [off-list ref] wrote:
 {
+       if (IS_ENABLED(CONFIG_OABI_COMPAT))
+               return task_thread_info(task)->syscall & ~__NR_OABI_SYSCALL_BASE;
Where __NR_OABI_SYSCALL_BASE is
#define __NR_OABI_SYSCALL_BASE       0x900000

So you will end up with sycall number & FF6FFFFF
masking off bits 20 and 23.

I suppose this is based on this:
        bics    r10, r10, #0xff000000
+       str     r10, [tsk, #TI_SYSCALL]
OK we mask off bits 24-31 before we store this.
        bic     scno, scno, #0xff000000         @ mask off SWI op-code
+       str     scno, [tsk, #TI_SYSCALL]
And here too.
        eor     scno, scno, #__NR_SYSCALL_BASE  @ check OS number
And then happens that which will ... I don't know really.
Exclusive or with 0x9000000 is not immediately intuitive
evident to me, I suppose it is for everyone else... :/

I need some idea how this numberspace is managed in order to
understand the code so I can review it, I guess it all makes perfect
sense but I need some background here.

Thanks,
Linus Walleij

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help