From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1VsfYB-0001b1-Cq for mharc-grub-devel@gnu.org; Mon, 16 Dec 2013 16:18:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42780) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VsfY4-0001af-QH for grub-devel@gnu.org; Mon, 16 Dec 2013 16:18:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VsfXz-00030v-4l for grub-devel@gnu.org; Mon, 16 Dec 2013 16:17:56 -0500 Received: from mail-ea0-f172.google.com ([209.85.215.172]:39415) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VsfXy-00030r-RE for grub-devel@gnu.org; Mon, 16 Dec 2013 16:17:51 -0500 Received: by mail-ea0-f172.google.com with SMTP id q10so2111998ead.31 for ; Mon, 16 Dec 2013 13:17:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type; bh=64E5q4elGA6TSjlMj/B1v8LMz+3klBaz6Sm3BQBDAu0=; b=w25gzgTs9xpNegH5sbrKqEbBLCags6jSJ3HxBW02+Nl85yWbDz4WF2GSru7UQb2NDG VZfCN95yVJzIa+XHlxNVkvY/e462fnjDMHXVU8XNBw/HIXO7mh+DbtIRQfZnigTZrb4x e/vvKIqz2KCIC5gn0FdAoVTWurmxHPLqL9JoYTZVPMUzoNtxJjFH1oiXGB3U5xg4JTVm dhHfO6f8vRvKCeyXkkbZmYdWNv/V9EfC30nLb557AVGtcF1tX0JhBlzxTyKSYxGb6UES mDEr1RzcVlq4/4pLxwsbwxazMaghhMKKXL5wo7lzsuQEixjW5ljIycjOuVOrzG233uoF i31g== X-Received: by 10.14.172.130 with SMTP id t2mr18911629eel.68.1387228634977; Mon, 16 Dec 2013 13:17:14 -0800 (PST) Received: from [192.168.1.16] (85-188.196-178.cust.bluewin.ch. [178.196.188.85]) by mx.google.com with ESMTPSA id h48sm46672681eev.3.2013.12.16.13.17.13 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 16 Dec 2013 13:17:13 -0800 (PST) Message-ID: <52AF6DD8.1050407@gmail.com> Date: Mon, 16 Dec 2013 22:17:12 +0100 From: =?UTF-8?B?VmxhZGltaXIgJ8+GLWNvZGVyL3BoY29kZXInIFNlcmJpbmVua28=?= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20131103 Icedove/17.0.10 MIME-Version: 1.0 To: grub-devel@gnu.org Subject: Re: [PATCH] add fdt prerequisites for arm64 UEFI Linux loader References: <20131216135210.GU22356@rocoto.smurfnet.nu> In-Reply-To: <20131216135210.GU22356@rocoto.smurfnet.nu> X-Enigmail-Version: 1.6 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="rBDc975AcRq4bmnTa97XOploCqjESpsKv" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.215.172 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Dec 2013 21:18:02 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --rBDc975AcRq4bmnTa97XOploCqjESpsKv Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 16.12.2013 14:52, Leif Lindholm wrote: >=20 > 0001-fdt-additions-required-for-arm64-Linux-loader.patch >=20 >=20 >>>From ac2166a62495381736fa05668035230607d1bb3d Mon Sep 17 00:00:00 2001 > From: Leif Lindholm > Date: Wed, 4 Dec 2013 13:09:21 +0000 > Subject: [PATCH 1/2] fdt: additions required for arm64 Linux loader >=20 > - Add grub_fdt_create_empty_tree() function. > - Add 64-bit setprop. > --- > grub-core/lib/fdt.c | 28 ++++++++++++++++++++++++++++ > include/grub/fdt.h | 20 ++++++++++++++++++++ > 2 files changed, 48 insertions(+) >=20 > diff --git a/grub-core/lib/fdt.c b/grub-core/lib/fdt.c > index 9f34dc7..fb13672 100644 > --- a/grub-core/lib/fdt.c > +++ b/grub-core/lib/fdt.c > @@ -423,3 +423,31 @@ int grub_fdt_set_prop (void *fdt, unsigned int nod= eoffset, const char *name, > grub_memcpy (prop + 3, val, len); > return 0; > } > + > +int > +grub_fdt_create_empty_tree (void *fdt, unsigned int size) > +{ > + struct grub_fdt_empty_tree *et; > + > + if (size < GRUB_FDT_EMPTY_TREE_SZ) > + return -1; > + > + grub_memset (fdt, 0, size); > + et =3D fdt; > + > + et->empty_node.node_end =3D grub_cpu_to_be32 (FDT_END); > + et->empty_node.prop_end =3D grub_cpu_to_be32 (FDT_END_NODE); grub_cpu_to_be32_compile_time is better suited. > + et->empty_node.prop_start =3D grub_cpu_to_be32 (FDT_BEGIN_NODE); > + ((struct grub_fdt_empty_tree *) fdt)->header.off_mem_rsvmap =3D > + grub_cpu_to_be32 (ALIGN_UP (sizeof (grub_fdt_header_t), 8)); > + > + grub_fdt_set_off_dt_strings (fdt, sizeof (*et)); > + grub_fdt_set_off_dt_struct (fdt, sizeof (grub_fdt_header_t) + 16); > + grub_fdt_set_version (fdt, FDT_SUPPORTED_VERSION); > + grub_fdt_set_last_comp_version (fdt, FDT_SUPPORTED_VERSION); > + grub_fdt_set_size_dt_struct (fdt, sizeof (et->empty_node)); > + grub_fdt_set_totalsize (fdt, size); > + grub_fdt_set_magic (fdt, FDT_MAGIC); > + > + return 0; > +} > diff --git a/include/grub/fdt.h b/include/grub/fdt.h > index 2ad0536..bbc88ec 100644 > --- a/include/grub/fdt.h > +++ b/include/grub/fdt.h > @@ -36,6 +36,19 @@ typedef struct { > grub_uint32_t size_dt_struct; > } grub_fdt_header_t; > =20 > +struct grub_fdt_empty_tree { > + grub_fdt_header_t header; > + grub_uint64_t empty_rsvmap[2]; > + struct { > + grub_uint32_t prop_start; > + grub_uint8_t name[1]; > + grub_uint32_t prop_end; > + grub_uint32_t node_end; > + } empty_node; > +}; > + > +#define GRUB_FDT_EMPTY_TREE_SZ sizeof (struct grub_fdt_empty_tree) > + > #define grub_fdt_get_header(fdt, field) \ > grub_be_to_cpu32(((const grub_fdt_header_t *)(fdt))->field) > #define grub_fdt_set_header(fdt, field, value) \ > @@ -82,6 +95,7 @@ typedef struct { > #define grub_fdt_set_size_dt_struct(fdt, value) \ > grub_fdt_set_header(fdt, size_dt_struct, value) > =20 > +int grub_fdt_create_empty_tree (void *fdt, unsigned int size); > int grub_fdt_check_header (void *fdt, unsigned int size); > int grub_fdt_find_subnode (const void *fdt, unsigned int parentoffset,= > const char *name); > @@ -96,4 +110,10 @@ int grub_fdt_set_prop (void *fdt, unsigned int node= offset, const char *name, > grub_fdt_set_prop ((fdt), (nodeoffset), (name), &_val, 4); \ > }) > =20 > +#define grub_fdt_set_prop64(fdt, nodeoffset, name, val) \ > +({ \ > + grub_uint64_t _val =3D grub_cpu_to_be64(val); \ > + grub_fdt_set_prop ((fdt), (nodeoffset), (name), &_val, 8); \ > +}) > + Why not make it into inline function? > #endif /* ! GRUB_FDT_HEADER */ > -- 1.7.10.4 >=20 >=20 >=20 > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/grub-devel >=20 --rBDc975AcRq4bmnTa97XOploCqjESpsKv Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.15 (GNU/Linux) Comment: Using GnuPG with Icedove - http://www.enigmail.net/ iF4EAREKAAYFAlKvbdgACgkQmBXlbbo5nOuk7gD/Xhn9aAqhUs8NaSrHppORSzNd VchHu95oLsPaK9+BsosA/0sqbYHY7uleXKxoWQ6VY5OZI7ffR7XsIynMcAypqWZM =fL2n -----END PGP SIGNATURE----- --rBDc975AcRq4bmnTa97XOploCqjESpsKv--