hikey: Add UEFI sources for reference

UEFI needs to be built outside Android build system.
Please follow the instructions in README.

The sources correspond to:
https://github.com/96boards/edk2/commit/14eae0c12e71fd33c4c0fc51e4475e8db02566cf
https://github.com/96boards/arm-trusted-firmware/commit/e9b4909dcd75fc4ae7041cfb83d28ab9adb7afdf
https://github.com/96boards/l-loader/commit/6b784ad5c4ab00e2b1c6f53cd5f74054e5d00a78
https://git.linaro.org/uefi/uefi-tools.git/commit/abe618f8ab72034fff1ce46c9c006a2c6bd40a7e

Change-Id: Ieeefdb63e673e0c8e64e0a1f02c7bddc63b2c7fb
Signed-off-by: Vishal Bhoj <vishal.bhoj@linaro.org>
diff --git a/uefi/linaro-edk2/StdLib/BsdSocketLib/getnetbyht.c b/uefi/linaro-edk2/StdLib/BsdSocketLib/getnetbyht.c
new file mode 100644
index 0000000..08b8042
--- /dev/null
+++ b/uefi/linaro-edk2/StdLib/BsdSocketLib/getnetbyht.c
@@ -0,0 +1,169 @@
+/*

+ * Copyright (c) 1983, 1993

+ *	The Regents of the University of California.  All rights reserved.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ * 1. Redistributions of source code must retain the above copyright

+ *    notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ *    notice, this list of conditions and the following disclaimer in the

+ *    documentation and/or other materials provided with the distribution.

+ * 3. All advertising materials mentioning features or use of this software

+ *    must display the following acknowledgement:

+ *	This product includes software developed by the University of

+ *	California, Berkeley and its contributors.

+ * 4. Neither the name of the University nor the names of its contributors

+ *    may be used to endorse or promote products derived from this software

+ *    without specific prior written permission.

+ *

+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND

+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE

+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS

+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT

+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY

+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

+ * SUCH DAMAGE.

+ */

+

+/* Portions Copyright (c) 1993 Carlos Leandro and Rui Salgueiro

+ *	Dep. Matematica Universidade de Coimbra, Portugal, Europe

+ *

+ * Permission to use, copy, modify, and distribute this software for any

+ * purpose with or without fee is hereby granted, provided that the above

+ * copyright notice and this permission notice appear in all copies.

+ *

+ * from getnetent.c	1.1 (Coimbra) 93/06/02

+ */

+

+#if defined(LIBC_SCCS) && !defined(lint)

+static char sccsid[] = "@(#)getnetent.c	8.1 (Berkeley) 6/4/93";

+static char orig_rcsid[] = "From: Id: getnetent.c,v 8.4 1997/06/01 20:34:37 vixie Exp";

+static chat rcsid[] = "$Id: getnetbyht.c,v 1.1.1.1 2003/11/19 01:51:27 kyu3 Exp $";

+#endif /* LIBC_SCCS and not lint */

+

+#include <sys/types.h>

+#include <sys/socket.h>

+#include <netinet/in.h>

+#include <arpa/inet.h>

+#include <arpa/nameser.h>

+#include <netdb.h>

+#include <stdio.h>

+#include <string.h>

+

+#define	MAXALIASES	35

+

+static FILE *netf;

+static char line[BUFSIZ+1];

+static struct netent net;

+static char *net_aliases[MAXALIASES];

+static int _net_stayopen;

+

+void

+_setnethtent(int f)

+{

+

+	if (netf == NULL)

+		netf = fopen(_PATH_NETWORKS, "r" );

+	else

+		rewind(netf);

+	_net_stayopen |= f;

+}

+

+void

+_endnethtent()

+{

+

+	if (netf) {

+		fclose(netf);

+		netf = NULL;

+	}

+	_net_stayopen = 0;

+}

+

+struct netent *

+getnetent()

+{

+	char *p;

+	register char *cp, **q;

+

+	if (netf == NULL && (netf = fopen(_PATH_NETWORKS, "r" )) == NULL)

+		return (NULL);

+again:

+	p = fgets(line, sizeof line, netf);

+	if (p == NULL)

+		return (NULL);

+	if (*p == '#')

+		goto again;

+	cp = strpbrk(p, "#\n");

+	if (cp == NULL)

+		goto again;

+	*cp = '\0';

+	net.n_name = p;

+	cp = strpbrk(p, " \t");

+	if (cp == NULL)

+		goto again;

+	*cp++ = '\0';

+	while (*cp == ' ' || *cp == '\t')

+		cp++;

+	p = strpbrk(cp, " \t");

+	if (p != NULL)

+		*p++ = '\0';

+	net.n_net = inet_network(cp);

+	net.n_addrtype = AF_INET;

+	q = net.n_aliases = net_aliases;

+	if (p != NULL) 

+		cp = p;

+	while (cp && *cp) {

+		if (*cp == ' ' || *cp == '\t') {

+			cp++;

+			continue;

+		}

+		if (q < &net_aliases[MAXALIASES - 1])

+			*q++ = cp;

+		cp = strpbrk(cp, " \t");

+		if (cp != NULL)

+			*cp++ = '\0';

+	}

+	*q = NULL;

+	return (&net);

+}

+

+struct netent *

+_getnetbyhtname(register const char *name)

+{

+	register struct netent *p;

+	register char **cp;

+

+	setnetent(_net_stayopen);

+	while ( NULL != (p = getnetent()) ) {

+		if (strcasecmp(p->n_name, name) == 0)

+			break;

+		for (cp = p->n_aliases; *cp != 0; cp++)

+			if (strcasecmp(*cp, name) == 0)

+				goto found;

+	}

+found:

+	if (!_net_stayopen)

+		endnetent();

+	return (p);

+}

+

+struct netent *

+_getnetbyhtaddr(register unsigned long net, register int type)

+{

+	register struct netent *p;

+

+	setnetent(_net_stayopen);

+	while ( NULL != (p = getnetent()) )

+		if (p->n_addrtype == type && p->n_net == net)

+			break;

+	if (!_net_stayopen)

+		endnetent();

+	return (p);

+}