Linux SNPS ARC Archive on lore.kernel.org
 help / color / Atom feed
From: Vineet Gupta <Vineet.Gupta1@synopsys.com>
To: Adhemerval Zanella <adhemerval.zanella@linaro.org>,
	"libc-alpha@sourceware.org" <libc-alpha@sourceware.org>
Cc: arcml <linux-snps-arc@lists.infradead.org>
Subject: Re: [PATCH v7.1 07/13] ARC: Linux Syscall Interface
Date: Sat, 4 Jul 2020 03:54:06 +0000
Message-ID: <64e18e52-9dc6-6d14-3e15-8c5ff1c0cdc2@synopsys.com> (raw)
In-Reply-To: <e9e2ae28-cd78-5924-c1fa-52b1499c245a@linaro.org>

On 7/2/20 7:47 PM, Adhemerval Zanella via Libc-alpha wrote:
> 
> 
> On 30/06/2020 21:08, Vineet Gupta via Libc-alpha wrote:
>> ---
>>    Changes since v7:
>>      - used long int (iso int) in sysdep.h/syscall_error for handling registers
> 
> Patch looks ok, but I have question on the __NR_* undef/define. 
> 

>> diff --git a/sysdeps/unix/sysv/linux/arc/arch-syscall.h b/sysdeps/unix/sysv/linux/arc/arch-syscall.h
...
>> +#define __NR_write 64
>> +#define __NR_writev 66
> 
> Looks good. As side note I think an improvement would be to add
> an annotation on update-syscall-lists.py to specify which kernel
> version it used.

Very good idea indeed. I've asked myself the very question atleast once.


>> diff --git a/sysdeps/unix/sysv/linux/arc/clone.S b/sysdeps/unix/sysv/linux/arc/clone.S
..
>> +
>> +	; adjust libc args for syscall
> 
> Use the C comment style for constency with rest of the file.

Done.

>> diff --git a/sysdeps/unix/sysv/linux/arc/fixup-asm-unistd.h b/sysdeps/unix/sysv/linux/arc/fixup-asm-unistd.h

>> +
>> +/* Adjustments to ARC asm-generic syscall ABI (3.9 kernel) for 64-bit time_t
>> +   support.  */
>> +
>> +/* fstat64 and fstatat64 need to be replaced with statx.  */
>> +
>> +#undef __NR_fstat64
>> +#undef __NR_fstatat64

This is certainly needed as they are present in ARC arch-syscall.h but we need to
use statx.

>> +/* Replace all other 32-bit time syscalls with 64-bit variants.  */
>> +
>> +# undef __NR_clock_adjtime
>> +# undef __NR_clock_getres
>> +# undef __NR_futex
>> +# undef __NR_mq_timedreceive
>> +# undef __NR_mq_timedsend
>> +# undef __NR_ppoll
>> +# undef __NR_pselect6
>> +# undef __NR_recvmmsg
>> +# undef __NR_rt_sigtimedwait
>> +# undef __NR_sched_rr_get_interval
>> +# undef __NR_semtimedop
>> +# undef __NR_timerfd_settime
>> +# undef __NR_timerfd_gettime
>> +# undef __NR_utimensat
> 
> I am trying to understand why these are required since arc does not define 
> them in arch-syscall.h.

arch-syscall.h doesn't define them precisely due to these being here. When
update-syscalls is run, the 32-bit syscalls are generated for ARC (since kernel
ABI provides these because that was v3.9 circa 2013). Adding them
fixup-asm-unistd.h removes them (perhaps I need to add this in changelog to
clarify - atleast for myself).

> And the generic implementation should handle the time64 variant.  If they
> are not this is something we need to handle it.

At the time we we doing this, arch-syscall.h generation was not yet in place,
however I tried to undef in generic/sysdep.h for TIMESIZE==64. However I was asked
me to add this to ARC specific fixup-asm-unistd.h
https://sourceware.org/pipermail/libc-alpha/2020-March/112395.html
https://sourceware.org/pipermail/libc-alpha/2020-April/112909.html

>> diff --git a/sysdeps/unix/sysv/linux/arc/kernel_stat.h b/sysdeps/unix/sysv/linux/arc/kernel_stat.h
...
>> +#define STATFS_IS_STATFS64 0
> 
> Ok.

This specific one is actually dead code. I did post a patch to this effect and
followed up with supporting data that enabling it on 64-bit arches doesn't lead to
any changes in generated code.

https://sourceware.org/pipermail/libc-alpha/2020-February/111259.html
https://sourceware.org/pipermail/libc-alpha/2020-June/115217.html


>> diff --git a/sysdeps/unix/sysv/linux/arc/sysdep.h b/sysdeps/unix/sysv/linux/arc/sysdep.h

...

>> +/* 32-bit time syscalls are not available, but the redefines allow generic
>> +   wrappers to work.  */
>> +#define __NR_clock_adjtime	__NR_clock_adjtime64
>> +#define __NR_clock_getres	__NR_clock_getres_time64
>> +#define __NR_futex		__NR_futex_time64
>> +#define __NR_mq_timedreceive	__NR_mq_timedreceive_time64
>> +#define __NR_mq_timedsend	__NR_mq_timedsend_time64
>> +#define __NR_ppoll		__NR_ppoll_time64
>> +#define __NR_pselect6		__NR_pselect6_time64
>> +#define __NR_recvmmsg		__NR_recvmmsg_time64
>> +#define __NR_rt_sigtimedwait	__NR_rt_sigtimedwait_time64
>> +#define __NR_sched_rr_get_interval	__NR_sched_rr_get_interval_time64
>> +#define __NR_semtimedop		__NR_semtimedop_time64
>> +#define __NR_timerfd_gettime	__NR_timerfd_gettime64
>> +#define __NR_timerfd_settime	__NR_timerfd_settime64
>> +#define __NR_utimensat		__NR_utimensat_time64
> 
> As for the fixup-asm-unistd.h, the generic implementation should handle it
> without the requirement of the ABI to add such tricks.

fixup-asm-unistd.h is different, but this could be avoided. I know for sure that
ll code literally expects __NR_futex (atleast used to). But I can remove this and
see what comes out.

> 
> However it seems that we are still missing support for pselect 
> (__NR_pselect6_time64), recvmmsg (__NR_recvmmsg_time64), sigtimedwait 
> (__NR_rt_sigtimedwait_time64), and semtimeop (__NR_semtimedop_time64).
> 
> I think we can add the redefine hack only the aforementioned symbols for
> now and removed them once we implement the y2038 support on such symbols
> (since the expected ABI won't change for ARC, only for old ABIs with
> 32 time_t support).

Sorry /me horribly confused here.

>> +
>> +#undef SYS_ify
>> +#define SYS_ify(syscall_name)   __NR_##syscall_name
> 
> The code mixes __NR_* and SYS_ify macro. This macro is really superflous
> and I am preparing some patches to cleanup this up along with C asm
> macros to generate syscall.  So I would suggest to just use the __NR_*
> way and drop this definition.

I don't mind, but it seems that the wrapper was a simply way to avoid open-coding
the macro concatenation. e.g.

# define DO_CALL(syscall_name, args)                    \
-    mov    r8, SYS_ify (syscall_name)  ASM_LINE_SEP    \
+    mov    r8, __NR__##syscall_name  ASM_LINE_SEP    \
     ARC_TRAP_INSN
_______________________________________________
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc

  parent reply index

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-15 20:14 [PATCH v7 00/13] glibc port to ARC processors Vineet Gupta
2020-06-15 20:14 ` [PATCH v7 01/13] ARC: ABI Implementation Vineet Gupta
2020-07-01  0:06   ` [PATCH v7.1 " Vineet Gupta
     [not found]     ` <b6322150-240a-5f06-b700-83e3eb79deec@linaro.org>
2020-07-01 19:36       ` Vineet Gupta
2020-07-01 19:45         ` Adhemerval Zanella
2020-06-15 20:14 ` [PATCH v7 02/13] ARC: startup and dynamic linking code Vineet Gupta
2020-06-15 20:14 ` [PATCH v7 03/13] ARC: Thread Local Storage support Vineet Gupta
2020-07-01  0:07   ` [PATCH v7.1 " Vineet Gupta
2020-06-15 20:14 ` [PATCH v7 04/13] ARC: Atomics and Locking primitives Vineet Gupta
2020-06-15 20:14 ` [PATCH v7 05/13] ARC: math soft float support Vineet Gupta
2020-06-15 20:14 ` [PATCH v7 06/13] ARC: hardware floating point support Vineet Gupta
2020-07-01  0:08   ` [PATCH v7.1 " Vineet Gupta
2020-06-15 20:14 ` [PATCH v7 07/13] ARC: Linux Syscall Interface Vineet Gupta
2020-07-01  0:08   ` [PATCH v7.1 " Vineet Gupta
     [not found]     ` <e9e2ae28-cd78-5924-c1fa-52b1499c245a@linaro.org>
2020-07-04  3:54       ` Vineet Gupta [this message]
2020-07-06 13:20         ` Adhemerval Zanella
2020-07-07  1:25           ` Vineet Gupta
2020-07-07 19:24             ` Adhemerval Zanella
2020-07-07 20:55               ` [PATCH v7.2 " Vineet Gupta
     [not found]                 ` <b64d0df1-4229-d619-0ab1-ded287323775@linaro.org>
2020-07-08 19:32                   ` Vineet Gupta
2020-07-09 16:03                     ` Adhemerval Zanella
2020-07-09 16:24                       ` Vineet Gupta
2020-07-09 16:25                         ` Adhemerval Zanella
2020-07-09 21:13                         ` Vineet Gupta
2020-07-09 21:36                           ` ARC testsuite regressions (was Re: [PATCH v7.2 07/13] ARC: Linux Syscall Interface) Vineet Gupta
2020-07-09 22:01                             ` Alistair Francis
2020-07-09 22:16                               ` Vineet Gupta
2020-07-10  9:28                               ` Florian Weimer
2020-07-10 15:53                                 ` Vineet Gupta
2020-07-10 17:02                                   ` Florian Weimer
2020-07-10 20:07                                     ` Vineet Gupta
2020-07-10 20:32                                       ` Florian Weimer
2020-07-10 19:12                                   ` Alistair Francis
2020-07-10 20:33                                     ` Florian Weimer
2020-07-10 20:56                                       ` Alistair Francis
2020-07-10 19:10                                 ` Alistair Francis
2020-07-07 21:07               ` [PATCH v7.1 07/13] ARC: Linux Syscall Interface Vineet Gupta
2020-07-07 21:32                 ` Joseph Myers
2020-07-07 23:16                   ` Vineet Gupta
2020-06-15 20:14 ` [PATCH v7 08/13] ARC: Linux ABI Vineet Gupta
2020-06-15 20:14 ` [PATCH v7 09/13] ARC: Linux Startup and Dynamic Loading Vineet Gupta
2020-06-15 20:14 ` [PATCH v7 10/13] ARC: ABI lists Vineet Gupta
2020-07-01  0:09   ` [PATCH v7.1 " Vineet Gupta
2020-06-15 20:14 ` [PATCH v7 11/13] ARC: Build Infrastructure Vineet Gupta
2020-07-03 17:09   ` Adhemerval Zanella
2020-06-15 20:14 ` [PATCH v7 12/13] build-many-glibcs.py: Enable ARC builds Vineet Gupta
2020-07-03 17:37   ` Adhemerval Zanella
2020-06-15 20:14 ` [PATCH v7 13/13] Documentation for ARC port Vineet Gupta
2020-07-03 17:38   ` Adhemerval Zanella
2020-06-23 16:56 ` [PATCH v7 00/13] glibc port to ARC processors Vineet Gupta
2020-07-01  0:11   ` Vineet Gupta
2020-07-01  1:44     ` Adhemerval Zanella
2020-07-01 19:13       ` Vineet Gupta
2020-07-02  1:00         ` ARC math test regressions (was Re: [PATCH v7 00/13] glibc port to ARC processors) Vineet Gupta
2020-07-02  7:17           ` Andreas Schwab
2020-07-02 16:27           ` Joseph Myers
2020-07-02 17:45             ` Vineet Gupta
2020-07-02 21:27       ` [PATCH v7 00/13] glibc port to ARC processors Joseph Myers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=64e18e52-9dc6-6d14-3e15-8c5ff1c0cdc2@synopsys.com \
    --to=vineet.gupta1@synopsys.com \
    --cc=adhemerval.zanella@linaro.org \
    --cc=libc-alpha@sourceware.org \
    --cc=linux-snps-arc@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux SNPS ARC Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-snps-arc/0 linux-snps-arc/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-snps-arc linux-snps-arc/ https://lore.kernel.org/linux-snps-arc \
		linux-snps-arc@lists.infradead.org
	public-inbox-index linux-snps-arc

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.infradead.lists.linux-snps-arc


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git