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/LibC/Stdio/ftello.c b/uefi/linaro-edk2/StdLib/LibC/Stdio/ftello.c
new file mode 100644
index 0000000..0677d1a
--- /dev/null
+++ b/uefi/linaro-edk2/StdLib/LibC/Stdio/ftello.c
@@ -0,0 +1,100 @@
+/*  $NetBSD: ftello.c,v 1.4 2003/08/07 16:43:26 agc Exp $ */

+

+/*-

+ * Copyright (c) 1990, 1993

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

+ *

+ * This code is derived from software contributed to Berkeley by

+ * Chris Torek.

+ *

+ * 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. 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.

+ */

+#include  <LibConfig.h>

+#include <sys/EfiCdefs.h>

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

+__RCSID("$NetBSD: ftello.c,v 1.4 2003/08/07 16:43:26 agc Exp $");

+#endif /* LIBC_SCCS and not lint */

+

+#include "namespace.h"

+#include <assert.h>

+#include <errno.h>

+#include <stdio.h>

+#include "reentrant.h"

+#include "local.h"

+

+#ifdef __weak_alias

+__weak_alias(ftello, _ftello)

+#endif

+

+/*

+ * ftell: return current offset.

+ */

+off_t

+ftello(FILE *fp)

+{

+  fpos_t pos;

+

+  FLOCKFILE(fp);

+

+  if (fp->_seek == NULL) {

+    FUNLOCKFILE(fp);

+    errno = ESPIPE;     /* historic practice */

+    return ((off_t)-1);

+  }

+

+  /*

+   * Find offset of underlying I/O object, then

+   * adjust for buffered bytes.

+   */

+  __sflush(fp);   /* may adjust seek offset on append stream */

+  if (fp->_flags & __SOFF)

+    pos = fp->_offset;

+  else {

+    pos = (*fp->_seek)(fp->_cookie, (fpos_t)0, SEEK_CUR);

+    if (pos == (fpos_t)-1) {

+      FUNLOCKFILE(fp);

+      return (pos);

+    }

+  }

+  if (fp->_flags & __SRD) {

+    /*

+     * Reading.  Any unread characters (including

+     * those from ungetc) cause the position to be

+     * smaller than that in the underlying object.

+     */

+    pos -= fp->_r;

+    if (HASUB(fp))

+      pos -= fp->_ur;

+  } else if (fp->_flags & __SWR && fp->_p != NULL) {

+    /*

+     * Writing.  Any buffered characters cause the

+     * position to be greater than that in the

+     * underlying object.

+     */

+    pos += fp->_p - fp->_bf._base;

+  }

+  FUNLOCKFILE(fp);

+  return (pos);

+}