Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Jul 2016 11:43:06 -0700
From:      Mark Millard <markmi@dsl-only.net>
To:        Nathan Whitehorn <nwhitehorn@freebsd.org>
Cc:        FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>, freebsd-stable@freebsd.org, FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: stable/11 question: kboot vs. powerpc: only powerpc64?
Message-ID:  <5B3BC302-70DE-4FDA-A442-AC317E146B46@dsl-only.net>
In-Reply-To: <341B3611-39DD-4359-9A26-CE4781445D02@dsl-only.net>
References:  <07312336-F627-4372-AEF2-5FA93CF6E4CD@dsl-only.net> <5783A3F5.2030301@freebsd.org> <73A6C8D3-6733-4E75-9C5C-59F8A5BB5039@dsl-only.net> <341B3611-39DD-4359-9A26-CE4781445D02@dsl-only.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2016-Jul-11, at 11:30 AM, Mark Millard <markmi@dsl-only.net> wrote:

> On 2016-Jul-11, at 11:04 AM, Mark Millard <markmi@dsl-only.net> wrote:
>=20
>> On 2016-Jul-11, at 6:49 AM, Nathan Whitehorn <nwhitehorn@freebsd.org> =
wrote:
>>>=20
>>> It is not 64-bit only; like the normal loader, it can load both =
32-bit and 64-bit kernels. Those two flags are probably obsolete at this =
point and were for compatibility with pre-2.17.5 versions of binutils. =
Can you do a test build with the -CFLAGS+=3D -Wa,-mppc64bridge line =
removed?
>>> -Nathan
>>>=20
>>> On 07/11/16 03:55, Mark Millard wrote:
>>>> Is the following something that should be updated something like is =
indicated below for 11.0-BETA1? Is kboot powerpc64 specific?
>>>>=20
>>>> # svnlite diff /usr/src/sys/boot/powerpc/Makefile
>>>> Index: /usr/src/sys/boot/powerpc/Makefile
>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>>>> --- /usr/src/sys/boot/powerpc/Makefile	(revision 302457)
>>>> +++ /usr/src/sys/boot/powerpc/Makefile	(working copy)
>>>> @@ -1,5 +1,9 @@
>>>> # $FreeBSD$
>>>> -SUBDIR=3D		boot1.chrp kboot ofw ps3 uboot
>>>> +SUBDIR=3D		boot1.chrp
>>>> +.if ${MACHINE_ARCH} =3D=3D "powerpc64"
>>>> +SUBDIR+=3D		kboot
>>>> +.endif
>>>> +SUBDIR+=3D		ofw ps3 uboot
>>>>  .include <bsd.subdir.mk>
>>>>=20
>>>>=20
>>>>=20
>>>> I ask because I'd submitted 206303 back on 2016-jan-16 reporting =
that TARGET_ARCH=3Dpowerpc WITH_BOOT=3D was stopped by getting a =
-Wc,-mppc64bride and a -mcpu=3Dpowerpc64 (one of the =
base/head/sys/boot/powerpc/kboot/Makefile SRCS being =
ppc64_elf_freebsd.c).
>>>>=20
>>>> =3D=3D=3D
>>>> Mark Millard
>>>> markmi at dsl-only.net
>>=20
>> I do not have access to powerpc's currently so I'm just going to be =
doing cross-build tests for TARGET_ARCH=3Dpowerpc and =
TARGET_ARCH=3Dpowerpc64 (from amd64) based on the below updates.
>>=20
>> You initially mention "two flags" but then only explicitly request =
removal of one (the -CFLAGS+=3D -Wa,-mppc64bridge line).
>>=20
>> I'm assuming that the -mcpu=3Dpowerpc64 is also to be removed if =
powerpc (non-64) is to be covered. See my intended test below. Let me =
know if it is not what you want.=20
>>=20
>>> # svnlite diff sys/boot/powerpc/kboot/Makefile
>>> Index: sys/boot/powerpc/kboot/Makefile
>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>>> --- sys/boot/powerpc/kboot/Makefile	(revision 302457)
>>> +++ sys/boot/powerpc/kboot/Makefile	(working copy)
>>> @@ -71,7 +71,7 @@
>>> # Avoid the open-close-dance for every file access as some firmwares =
perform
>>> # an auto-negotiation on every open of the network interface and =
thus causes
>>> # netbooting to take horribly long.
>>> -CFLAGS+=3D	-DNETIF_OPEN_CLOSE_ONCE -mcpu=3Dpowerpc64
>>> +CFLAGS+=3D	-DNETIF_OPEN_CLOSE_ONCE
>>>=20
>>> # Always add MI sources
>>> .PATH:		${.CURDIR}/../../common =
${.CURDIR}/../../../libkern
>>> @@ -88,9 +88,6 @@
>>>=20
>>> LDFLAGS=3D	-nostdlib -static -T ${.CURDIR}/ldscript.powerpc
>>>=20
>>> -# 64-bit bridge extensions
>>> -CFLAGS+=3D -Wa,-mppc64bridge
>>> -
>>> # Pull in common loader code
>>> #.PATH:		${.CURDIR}/../../ofw/common
>>> #.include	"${.CURDIR}/../../ofw/common/Makefile.inc"
>>=20
>>> # svnlite diff sys/boot/powerpc/Makefile
>>> #=20
>>=20
>> (I.e., I reverted sys/boot/powerpc/Makefile.)
>>=20
>> =3D=3D=3D
>> Mark Millard
>> markmi at dsl-only.net
>=20
> The TARGET_ARCH=3Dpowerpc build completed with the following messages =
(from grep'ing for kboot in the typescript file):
>=20
>> =3D=3D=3D> sys/boot/powerpc/kboot (all)
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/vers.c
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/conf.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/metadata.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/vers.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/main.o
>> /usr/src/sys/boot/powerpc/kboot/main.c:307:12: warning: variable 'sp' =
is uninitialized when used here [-Wuninitialized]
>> /usr/src/sys/boot/powerpc/kboot/main.c:306:29: note: initialize the =
variable 'sp' to silence this warning
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/ppc64_elf_fr=
eebsd.o
>> /usr/src/sys/boot/powerpc/kboot/ppc64_elf_freebsd.c:94:15: warning: =
implicit declaration of function 'md_load64' is invalid in C99 =
[-Wimplicit-function-declaration]
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/host_syscall=
.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/hostcons.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/hostdisk.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/kerneltramp.=
o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/kbootfdt.o
>> --- kbootfdt.o ---
>> /usr/src/sys/boot/powerpc/kboot/kbootfdt.c:54:17: warning: passing =
'const char *' to parameter of type 'char *' discards qualifiers =
[-Wincompatible-pointer-types-discards-qualifiers]
>> /usr/src/sys/boot/powerpc/kboot/host_syscall.h:36:21: note: passing =
argument to parameter 'path' here
>> /usr/src/sys/boot/powerpc/kboot/kbootfdt.c:123:8: warning: assigning =
to 'uint64_t *' (aka 'unsigned long long *') from 'const void *' =
discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
>> /usr/src/sys/boot/powerpc/kboot/kbootfdt.c:125:8: warning: assigning =
to 'uint64_t *' (aka 'unsigned long long *') from 'const void *' =
discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
>> /usr/src/sys/boot/powerpc/kboot/kbootfdt.c:134:8: warning: assigning =
to 'uint32_t *' (aka 'unsigned int *') from 'const void *' discards =
qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
>> /usr/src/sys/boot/powerpc/kboot/kbootfdt.c:135:8: warning: assigning =
to 'uint32_t *' (aka 'unsigned int *') from 'const void *' discards =
qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/ucmpdi2.o
>> In file included from =
/usr/src/sys/boot/powerpc/kboot/../../../libkern/ucmpdi2.c:37:
>> In file included from =
/usr/src/sys/boot/powerpc/kboot/../../../libkern/quad.h:59:
>> /usr/src/sys/boot/powerpc/kboot/../../../sys/syslimits.h:41:2: =
warning: "No user-serviceable parts inside." [-W#warnings]
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/boot.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/commands.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/console.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/devopen.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/interp.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/interp_backs=
lash.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/interp_parse=
.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/ls.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/misc.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/module.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/panic.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/load_elf32.o=

>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/reloc_elf32.=
o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/load_elf64.o=

>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/reloc_elf64.=
o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/dev_net.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/disk.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/part.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/crc32.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/interp_forth=
.o
>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/loader.kboot=

>> Building =
/usr/obj/clang/powerpc.powerpc/usr/src/sys/boot/powerpc/kboot/loader.help
>=20
> The compiler involved was clang 3.8.0 . (This was a WITH_META_MODE=3Dyes=
 build.)
>=20
> The TARGET_ARCH=3Dpowerpc64 build also completed. The compiler =
involved was powerpc64-gcc. (This was a WITH_META_MODE=3Dyes build.)
>=20
> =3D=3D=3D
> Mark Millard
> markmi at dsl-only.net

I just noticed at least one additional warning (for hostdisk.c) from the =
TARGET_ARCH=3Dpowerpc64 so here is the list via grep for that context:

> # grep kboot =
~/sys_typescripts/typescript_make_powerpc64vtsc_nodebug_incl_clang_xtoolch=
ain-amd64-host-2016-07-11:11:02:56 | grep -i warning:
> /usr/src/sys/boot/powerpc/kboot/ppc64_elf_freebsd.c:94:15: warning: =
implicit declaration of function 'md_load64' =
[-Wimplicit-function-declaration]
> /usr/src/sys/boot/powerpc/kboot/hostdisk.c:96:10: warning: format '%s' =
expects argument of type 'char *', but argument 2 has type 'void *' =
[-Wformat=3D]
> /usr/src/sys/boot/powerpc/kboot/kbootfdt.c:54:17: warning: passing =
argument 1 of 'host_open' discards 'const' qualifier from pointer target =
type [-Wdiscarded-qualifiers]
> /usr/src/sys/boot/powerpc/kboot/kbootfdt.c:123:8: warning: assignment =
discards 'const' qualifier from pointer target type =
[-Wdiscarded-qualifiers]
> /usr/src/sys/boot/powerpc/kboot/kbootfdt.c:125:8: warning: assignment =
discards 'const' qualifier from pointer target type =
[-Wdiscarded-qualifiers]
> /usr/src/sys/boot/powerpc/kboot/kbootfdt.c:134:8: warning: assignment =
discards 'const' qualifier from pointer target type =
[-Wdiscarded-qualifiers]
> /usr/src/sys/boot/powerpc/kboot/kbootfdt.c:135:8: warning: assignment =
discards 'const' qualifier from pointer target type =
[-Wdiscarded-qualifiers]
> /usr/src/sys/boot/powerpc/kboot/../../../sys/syslimits.h:41:2: =
warning: #warning "No user-serviceable parts inside." [-Wcpp]
> /usr/src/sys/boot/powerpc/kboot/../../common/ls.c:142:18: warning: =
variable 'tail' set but not used [-Wunused-but-set-variable]

=3D=3D=3D
Mark Millard
markmi at dsl-only.net




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5B3BC302-70DE-4FDA-A442-AC317E146B46>