Sources to port fenv.h to ARM and AARCH64

Eshan Dhawan eshandhawan51 at gmail.com
Sun Mar 22 09:45:57 UTC 2020


On Sun, Mar 22, 2020 at 2:49 AM Joel Sherrill <joel at rtems.org> wrote:

>
>
> On Sat, Mar 21, 2020 at 4:05 PM Aditya Upadhyay <aadit0402 at gmail.com>
> wrote:
>
>> On Sun, Mar 22, 2020 at 1:56 AM Joel Sherrill <joel at rtems.org> wrote:
>> >
>> >
>> >
>> > On Sat, Mar 21, 2020, 3:16 PM Aditya Upadhyay <aadit0402 at gmail.com>
>> wrote:
>> >>
>> >> On Sun, Mar 22, 2020 at 1:30 AM Joel Sherrill <joel at rtems.org> wrote:
>> >> >
>> >> >
>> >> >
>> >> > On Sat, Mar 21, 2020 at 3:03 AM Aditya Upadhyay <aadit0402 at gmail.com>
>> wrote:
>> >> >>
>> >> >>
>> >> >>
>> >> >> On Sat, 21 Mar 2020, 10:29 Eshan Dhawan, <eshandhawan51 at gmail.com>
>> wrote:
>> >> >>>
>> >> >>> I went through the FreeBSD and NetBSD sources for implementation
>> >> >>> In FreeBSD there is an architecture-specific implementation with
>> different header file for each architecture it supports .
>> >> >>> Whereas in NetBSD there is a single fenv.h defined but each
>> architecture has its own C file to implement the functions.
>> >> >>> Also FreeBSD has soft-float for ARM
>> >> >>> So, I think FreeBSD would be a better option.
>> >> >>
>> >> >>
>> >> >> Look into this discussion on mail thread:
>> >> >> https://sourceware.org/legacy-ml/newlib/2017/msg00818.html
>> >> >>
>> >> >> and this patch series on newlib mailing list.
>> >> >>
>> >> >> https://sourceware.org/legacy-ml/newlib/2019/msg00418.html .
>> >> >>
>> >> >> It will help to understand the fenv-stub code.
>> >> >
>> >> >
>> >> > I am having trouble finding the implementation of any fenv method in
>> the NetBSD code. I only am finding the weak alias mappings. Where is an
>> example of the body of one of the methods in any architecture?
>> >> >
>> >>
>> >> I have cloned this NetBSD Sources. As I can see those
>> >> architecture-specific implemented methods here. Please correct me if I
>> >> am looking into different than what you are looking for.
>> >>
>> >> ./lib/libm/arch/powerpc/fenv.c
>> >> ./lib/libm/arch/sh/fenv.c
>> >> ./lib/libm/arch/mips64/fenv.c
>> >> ./lib/libm/arch/amd64/fenv.c
>> >> ./lib/libm/arch/arm/fenv.c
>> >> ./lib/libm/arch/i387/fenv.c
>> >> ./lib/libm/arch/hppa/fenv.c
>> >> ./lib/libm/arch/m88k/fenv.c
>> >> ./lib/libm/arch/alpha/fenv.c
>> >> ./lib/libm/arch/sparc64/fenv.c
>> >> ./lib/libm/arch/aarch64/fenv.c
>> >> ./regress/lib/libm/fenv/fenv.c
>> >
>> >
>> > That's what I see browsing the repo.
>> >
>> > The single file NetBSD looks easy to integrate. Would be similar to the
>> x86_64 or i386 there now on file layout.
>> >
>> > Does the freebsd support more hardware variants?
>>
>> FreeBSD does not have fenv support for some architecture like RISCV,
>> M88k, alpha architecture, I can see netbsd support more
>> hardware variants. NetBSD includes fenv support for these architecture
>> also.
>>
>
> +1
>
> NetBSD has more architectures and looks easier to integrate. But we need
> to be
> sure the NetBSD implementation for an specific architecture covers all the
> cases
> that FreeBSD does. If equal, pick the more that is easier to integrate.
>
>
I went through the FreeBSD and NetBSD repositories
NetBSD has support for :
aarch64
arm
i387
sparc &sparc64
x86_64
alpha
hppa
riscv

while lacks the support for :
sh3
powerpc
mips
m68k
ia64 (incomplete implementation)

where as FreeBSD has an added support for mips and powerpc other than
supported in NetBSD

list of supported architectures in FreeBSD :
aarch64
amd64
arm
i387
MIPS
PowerPC
RISC-V
sparc64
X86

--Eshan

--joel
>
>
>>
>> >>
>> >>
>> >> > --joel
>> >> >>
>> >> >>
>> >> >>
>> >> >>>
>> >> >>> On Sat, Mar 21, 2020 at 2:37 AM Joel Sherrill <joel at rtems.org>
>> wrote:
>> >> >>>>
>> >> >>>>
>> >> >>>>
>> >> >>>> On Fri, Mar 20, 2020 at 3:33 PM Eshan Dhawan <
>> eshandhawan51 at gmail.com> wrote:
>> >> >>>>>
>> >> >>>>> thanks, dr Joel
>> >> >>>>>
>> >> >>>>> I had gone through the musl-libc library but it doesn't have
>> much architecture specific support for ARM as well as AARCH64
>> >> >>>>> It has support for s390x, m68k, powerpc64
>> >> >>>>
>> >> >>>>
>> >> >>>> This type of evaluation is important.  The architecture may be
>> supported in only one implementation or one may be more complete than
>> another.
>> >> >>>>
>> >> >>>> Ignoring the license requirements of course.
>> >> >>>>>
>> >> >>>>>
>> >> >>>>>
>> >> >>>>> On Sat, Mar 21, 2020 at 1:32 AM Joel Sherrill <joel at rtems.org>
>> wrote:
>> >> >>>>>>
>> >> >>>>>>
>> >> >>>>>>
>> >> >>>>>> On Fri, Mar 20, 2020 at 2:43 PM Eshan Dhawan <
>> eshandhawan51 at gmail.com> wrote:
>> >> >>>>>>>
>> >> >>>>>>> What would be the preferred source to port fenv.h to ARM and
>> AARCH64
>> >> >>>>>>> its implementation is present in both FreeBSD as well AS NetBSD
>> >> >>>>>>> -> ARM
>> >> >>>>>>> ---FreeBSD Source
>> >> >>>>>>> # https://github.com/freebsd/freebsd/tree/master/lib/msun/arm
>> >> >>>>>>> ---NetBSD Source
>> >> >>>>>>> # https://github.com/NetBSD/src/tree/trunk/lib/libm/arch/arm
>> >> >>>>>>>
>> >> >>>>>>> ->AARCH64
>> >> >>>>>>> ---FreeBSD Source
>> >> >>>>>>> #
>> https://github.com/freebsd/freebsd/tree/master/lib/msun/aarch64
>> >> >>>>>>> ---NetBSD Source
>> >> >>>>>>> #
>> https://github.com/NetBSD/src/tree/trunk/lib/libm/arch/aarch64
>> >> >>>>>>
>> >> >>>>>>
>> >> >>>>>> Don't forget MUSL-C Library which has a lot of architectures and
>> >> >>>>>> is appropriately licensed.
>> >> >>>>>>
>> >> >>>>>> https://git.musl-libc.org/cgit/musl/tree/src/fenv
>> >> >>>>>>
>> >> >>>>>> I think our the order is going to be FreeBSD, NetBSD, then
>> other places.
>> >> >>>>>>
>> >> >>>>>> The code drops into newlib's libm in a particular way which may
>> require
>> >> >>>>>> some refactoring. fenv.h is shared across all ports and
>> machine/fenv.h is
>> >> >>>>>> where port code goes. There must be an architecture specific
>> file for each
>> >> >>>>>> method. But the entire implementation could go in one file and
>> the others
>> >> >>>>>> be stubs. The i386 does this.
>> >> >>>>>>
>> >> >>>>>> --joel
>> >> >>>>>>>
>> >> >>>>>>>
>> >> >>>>>>>
>> >> >>>>>>>
>> >> >>>>>>> Thanks
>> >> >>>>>>> -Eshan
>> >> >>>>>>> _______________________________________________
>> >> >>>>>>> devel mailing list
>> >> >>>>>>> devel at rtems.org
>> >> >>>>>>> http://lists.rtems.org/mailman/listinfo/devel
>> >> >>>
>> >> >>> _______________________________________________
>> >> >>> devel mailing list
>> >> >>> devel at rtems.org
>> >> >>> http://lists.rtems.org/mailman/listinfo/devel
>> >> >>
>> >> >> _______________________________________________
>> >> >> devel mailing list
>> >> >> devel at rtems.org
>> >> >> http://lists.rtems.org/mailman/listinfo/devel
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20200322/ab019151/attachment.html>


More information about the devel mailing list