NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: port-arm/48193: On NetBSD/evbearmv6hf-el for Raspberry Pi, MACHINE_ARCH returns earm, but *hf* is expected in /usr/share/mk/bsd.own.mk .
On Sep 13, 2013, at 5:25 PM, Ryo ONODERA <ryo_on%yk.rim.or.jp@localhost> wrote:
> The following reply was made to PR port-arm/48193; it has been noted by GNATS.
>
> From: Ryo ONODERA <ryo_on%yk.rim.or.jp@localhost>
> To: gnats-bugs%NetBSD.org@localhost
> Cc:
> Subject: Re: port-arm/48193: On NetBSD/evbearmv6hf-el for Raspberry Pi,
> MACHINE_ARCH returns earm, but *hf* is expected in
> /usr/share/mk/bsd.own.mk .
> Date: Sat, 14 Sep 2013 09:23:55 +0900 (JST)
>
> Hi,
>
> From: Izumi Tsutsui <tsutsui%ceres.dti.ne.jp@localhost>, Date: Tue, 10 Sep
> 2013 14:30:01 +0000 (UTC)
>
>> The following reply was made to PR port-arm/48193; it has been noted by
>> GNATS.
>>
>> From: Izumi Tsutsui <tsutsui%ceres.dti.ne.jp@localhost>
>> To: gnats-bugs%NetBSD.org@localhost
>> Cc: tsutsui%ceres.dti.ne.jp@localhost
>> Subject: Re: port-arm/48193: On NetBSD/evbearmv6hf-el for Raspberry Pi,
>> MACHINE_ARCH
>> returns earm, but *hf* is expected in /usr/share/mk/bsd.own.mk .
>> Date: Tue, 10 Sep 2013 23:28:42 +0900
>>
>> <arm/param.h> doesn't have proper *hf defines for sysctl.hw.machine_arch.
>> http://nxr.netbsd.org/xref/src/sys/arch/arm/include/param.h?r=1.18#5
>
> Thank you.
>
> make -V MACHINE_ARCH returns earmhf for evbearmv6hf-el
> Raspberry Pi with the following patch.
>
> pkgsrc/sysutils/checkpems is built successfully.
>
> Index: param.h
> ===================================================================
> RCS file: /cvsroot/src/sys/arch/arm/include/param.h,v
> retrieving revision 1.18
> diff -u -r1.18 param.h
> --- param.h 22 Apr 2013 07:53:29 -0000 1.18
> +++ param.h 14 Sep 2013 00:02:22 -0000
> @@ -55,16 +55,26 @@
> # ifndef MACHINE_ARCH /* XXX For now */
> # ifndef __ARMEB__
> # ifdef __ARM_EABI__
> -# define _MACHINE_ARCH earm
> -# define MACHINE_ARCH "earm"
> +# if (defined(__VFP_FP__) && !defined(__SOFTFP__)) /* hardfloat */
> +# define _MACHINE_ARCH earmhf
> +# define MACHINE_ARCH "earmhf"
> +# else /* softfloat */
> +# define _MACHINE_ARCH earm
> +# define MACHINE_ARCH "earm"
> +# endif
> # else
> # define _MACHINE_ARCH arm
> # define MACHINE_ARCH "arm"
> # endif
> # else
> # ifdef __ARM_EABI__
> -# define _MACHINE_ARCH earmeb
> -# define MACHINE_ARCH "earmeb"
> +# if (defined(__VFP_FP__) && !defined(__SOFTFP__)) /* hardfloat */
> +# define _MACHINE_ARCH earmhfeb
> +# define MACHINE_ARCH "earmhfeb"
> +# else /* softfloat */
> +# define _MACHINE_ARCH earmeb
> +# define MACHINE_ARCH "earmeb"
> +# endif
> # else
> # define _MACHINE_ARCH armeb
> # define MACHINE_ARCH "armeb"
> @@ -80,16 +90,26 @@
> # define MACHINE "arm"
> # ifndef __ARMEB__
> # ifdef __ARM_EABI__
> -# define _MACHINE_ARCH earm
> -# define MACHINE_ARCH "earm"
> +# if (defined(__VFP_FP__) && !defined(__SOFTFP__)) /* hardfloat */
> +# define _MACHINE_ARCH earmhf
> +# define MACHINE_ARCH "earmhf"
> +# else /* softfloat */
> +# define _MACHINE_ARCH earm
> +# define MACHINE_ARCH "earm"
> +# endif
> # else
> # define _MACHINE_ARCH arm
> # define MACHINE_ARCH "arm"
> # endif
> # else
> # ifdef __ARM_EABI__
> -# define _MACHINE_ARCH earmeb
> -# define MACHINE_ARCH "earmeb"
> +# if (defined(__VFP_FP__) && !defined(__SOFTFP__)) /* hardfloat */
> +# define _MACHINE_ARCH earmhfeb
> +# define MACHINE_ARCH "earmhfeb"
> +# else /* softfloat */
> +# define _MACHINE_ARCH earmeb
> +# define MACHINE_ARCH "earmeb"
> +# endif
> # else
> # define _MACHINE_ARCH armeb
> # define MACHINE_ARCH "armeb"
That doesn't really work since the kernel is always softfloat.
I fixed it differently by embedding the MACHINE_ARCH in a note
in the executable. The kernel records the supplied MACHINE_ARCH
in and returns when a sysctl for hw.machine_arch is done.
Home |
Main Index |
Thread Index |
Old Index