EADK (StdLib, AppPkg, StdLibPrivateInternalFiles): Python Beta Release.

Clean up and clearly differentiate required and optional items in configuration files.
Enable the system command and synchronize configuration options between all CPU architectures.
Replace the UEFI_ENV macro with UEFI_C_SOURCE to align with Linux and Posix conventions.
Update copyrights and versions and make minor cosmetic enhancements to files.
Fix compiler-specific build errors.
Add Python-specific ReadMe file.

Signed-off-by: darylm503
Reviewed-by: geekboy15a
Reviewed-by: jljusten
Reviewed-by: leegrosenbaum


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13119 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
darylm503
2012-03-24 01:19:06 +00:00
parent 2df686c67c
commit d78fab6b4e
21 changed files with 772 additions and 560 deletions

View File

@ -7,7 +7,7 @@
# for important information about configuring this package for your # for important information about configuring this package for your
# environment. # environment.
# #
# Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR> # Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.<BR>
# This program and the accompanying materials # This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at # which accompanies this distribution. The full text of the license may be found at
@ -30,8 +30,8 @@
[PcdsFeatureFlag] [PcdsFeatureFlag]
[PcdsFixedAtBuild] [PcdsFixedAtBuild]
gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0f gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x00
gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000000 gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000040
[PcdsFixedAtBuild.IPF] [PcdsFixedAtBuild.IPF]
@ -53,7 +53,13 @@
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
#
# To enable debugging:
# Enable ONE of the following DebugLib instances, as appropriate for your platform.
#
DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
# DebugLib|MdePkg/Library/UefiDebugLibConOut/UefiDebugLibConOut.inf
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
@ -97,7 +103,7 @@
#### Sample Applications. #### Sample Applications.
AppPkg/Applications/Hello/Hello.inf # No LibC includes or functions. AppPkg/Applications/Hello/Hello.inf # No LibC includes or functions.
AppPkg/Applications/Main/Main.inf # Simple invocation. No other LibC functions. AppPkg/Applications/Main/Main.inf # Simple invocation. No other LibC functions.
AppPkg/Applications/Enquire/Enquire.inf AppPkg/Applications/Enquire/Enquire.inf #
#### After extracting the Python distribution, un-comment the following line to build Python. #### After extracting the Python distribution, un-comment the following line to build Python.
# AppPkg/Applications/Python/PythonCore.inf # AppPkg/Applications/Python/PythonCore.inf

View File

@ -75,43 +75,31 @@ extern void initselect(void);
extern void PyMarshal_Init(void); extern void PyMarshal_Init(void);
extern void initimp(void); extern void initimp(void);
extern void initunicodedata(void);
extern void init_ctypes(void);
struct _inittab _PyImport_Inittab[] = { struct _inittab _PyImport_Inittab[] = {
//{"_ast", init_ast}, //{"_ast", init_ast},
//{"_bisect", init_bisect}, //{"_bisect", init_bisect}, /* A fast version of bisect.py */
//{"_codecs", init_codecs}, //{"_heapq", init_heapq}, /* A fast version of heapq.py */
//{"_collections", init_collections},
//{"_functools", init_functools},
//{"_heapq", init_heapq},
//{"_io", init_io}, //{"_io", init_io},
//{"_json", init_json}, //{"_json", init_json},
//{"_md5", init_md5}, //{"_md5", init_md5},
//{"_random", init_random},
//{"_sha", init_sha}, //{"_sha", init_sha},
//{"_sha256", init_sha256}, //{"_sha256", init_sha256},
//{"_sha512", init_sha512}, //{"_sha512", init_sha512},
//{"_socket", init_socket}, //{"_socket", init_socket},
//{"_sre", init_sre},
//{"_struct", init_struct},
//{"_weakref", init_weakref},
//{"array", initarray}, //{"array", initarray},
//{"binascii", initbinascii},
//{"cmath", initcmath}, //{"cmath", initcmath},
//{"cPickle", initcPickle}, //{"cPickle", initcPickle},
//{"cStringIO", initcStringIO},
//{"datetime", initdatetime}, //{"datetime", initdatetime},
//{"future_builtins", initfuture_builtins}, //{"future_builtins", initfuture_builtins},
//{"gc", initgc},
//{"itertools", inititertools},
//{"math", initmath},
//{"operator", initoperator},
//{"parser", initparser}, //{"parser", initparser},
//{"select", initselect}, //{"select", initselect},
//{"signal", initsignal}, //{"signal", initsignal},
//{"strop", initstrop}, //{"strop", initstrop}, /* redefines some string operations that are 100-1000 times faster */
//{"time", inittime},
//{"xxsubtype", initxxsubtype}, //{"xxsubtype", initxxsubtype},
//{"zipimport", initzipimport}, //{"zipimport", initzipimport},
//{"zlib", initzlib}, //{"zlib", initzlib},
@ -129,10 +117,24 @@ struct _inittab _PyImport_Inittab[] = {
{"thread", initthread}, {"thread", initthread},
#endif #endif
#if 0 //{"_symtable", init_symtable},
{"_symtable", init_symtable}, //{"_csv", init_csv},
{"_csv", init_csv},
#endif /* These modules are required for the full built-in help() facility provided by pydoc. */
{"_codecs", init_codecs},
{"_collections", init_collections},
{"_functools", init_functools},
{"_random", init_random},
{"_sre", init_sre},
{"_struct", init_struct}, /* Required by the logging package. */
{"_weakref", init_weakref},
{"binascii", initbinascii},
{"cStringIO", initcStringIO}, /* Required by several modules, such as logging. */
{"gc", initgc},
{"itertools", inititertools},
{"math", initmath},
{"operator", initoperator},
{"time", inittime},
/* These four modules should always be built in. */ /* These four modules should always be built in. */
{"edk2", initedk2}, {"edk2", initedk2},

View File

@ -2,7 +2,7 @@
OS-specific module implementation for EDK II and UEFI. OS-specific module implementation for EDK II and UEFI.
Derived from posixmodule.c in Python 2.7.2. Derived from posixmodule.c in Python 2.7.2.
Copyright (c) 2011, Intel Corporation. All rights reserved.<BR> Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution. the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at The full text of the license may be found at
@ -155,7 +155,7 @@ corresponding Unix manual entries for more information on calls.");
/* dummy version. _PyVerify_fd() is already defined in fileobject.h */ /* dummy version. _PyVerify_fd() is already defined in fileobject.h */
#define _PyVerify_fd_dup2(A, B) (1) #define _PyVerify_fd_dup2(A, B) (1)
#ifndef UEFI_ENV #ifndef UEFI_C_SOURCE
/* Return a dictionary corresponding to the POSIX environment table */ /* Return a dictionary corresponding to the POSIX environment table */
extern char **environ; extern char **environ;
@ -196,7 +196,7 @@ convertenviron(void)
} }
return d; return d;
} }
#endif /* UEFI_ENV */ #endif /* UEFI_C_SOURCE */
/* Set a POSIX-specific error from errno, and return NULL */ /* Set a POSIX-specific error from errno, and return NULL */
@ -372,7 +372,7 @@ static PyStructSequence_Desc stat_result_desc = {
10 10
}; };
#ifndef UEFI_ENV /* Not in UEFI */ #ifndef UEFI_C_SOURCE /* Not in UEFI */
PyDoc_STRVAR(statvfs_result__doc__, PyDoc_STRVAR(statvfs_result__doc__,
"statvfs_result: Result from statvfs or fstatvfs.\n\n\ "statvfs_result: Result from statvfs or fstatvfs.\n\n\
This object may be accessed either as a tuple of\n\ This object may be accessed either as a tuple of\n\
@ -433,7 +433,7 @@ statresult_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
/* If true, st_?time is float. */ /* If true, st_?time is float. */
#if defined(UEFI_ENV) #if defined(UEFI_C_SOURCE)
static int _stat_float_times = 0; static int _stat_float_times = 0;
#else #else
static int _stat_float_times = 1; static int _stat_float_times = 1;
@ -7349,14 +7349,14 @@ INITFUNC(void)
if (m == NULL) if (m == NULL)
return; return;
#ifndef UEFI_ENV #ifndef UEFI_C_SOURCE
/* Initialize environ dictionary */ /* Initialize environ dictionary */
v = convertenviron(); v = convertenviron();
Py_XINCREF(v); Py_XINCREF(v);
if (v == NULL || PyModule_AddObject(m, "environ", v) != 0) if (v == NULL || PyModule_AddObject(m, "environ", v) != 0)
return; return;
Py_DECREF(v); Py_DECREF(v);
#endif /* UEFI_ENV */ #endif /* UEFI_C_SOURCE */
if (all_ins(m)) if (all_ins(m))
return; return;

View File

@ -1,7 +1,7 @@
/** @file /** @file
Manually generated Python Configuration file for EDK II. Manually generated Python Configuration file for EDK II.
Copyright (c) 2011, Intel Corporation. All rights reserved.<BR> Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution. the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at The full text of the license may be found at
@ -15,10 +15,7 @@
#include <Uefi.h> #include <Uefi.h>
/* Define to indicate that code is being built to run in the UEFI Environment. */ #define PLATFORM "uefi"
#define UEFI_ENV EFI_SYSTEM_TABLE_REVISION
#define PLATFORM "UEFI"
/* Define if building universal (internal helper macro) */ /* Define if building universal (internal helper macro) */
#undef AC_APPLE_UNIVERSAL_BUILD #undef AC_APPLE_UNIVERSAL_BUILD
@ -813,6 +810,9 @@
/* Define to 1 if you have the <sys/wait.h> header file. */ /* Define to 1 if you have the <sys/wait.h> header file. */
#undef HAVE_SYS_WAIT_H #undef HAVE_SYS_WAIT_H
/* Define to 1 if you have the system() command. */
#define HAVE_SYSTEM 1
/* Define to 1 if you have the `tcgetpgrp' function. */ /* Define to 1 if you have the `tcgetpgrp' function. */
#undef HAVE_TCGETPGRP #undef HAVE_TCGETPGRP
@ -938,7 +938,7 @@
#define PACKAGE_NAME "EDK II Python Package" #define PACKAGE_NAME "EDK II Python Package"
/* Define to the full name and version of this package. */ /* Define to the full name and version of this package. */
#define PACKAGE_STRING "EDK II Python Package V0.2" #define PACKAGE_STRING "EDK II Python Package V0.8"
/* Define to the one symbol short name of this package. */ /* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "EADK_Python" #define PACKAGE_TARNAME "EADK_Python"
@ -947,7 +947,7 @@
#define PACKAGE_URL "http://edk2.tianocore.org/toolkit/python" #define PACKAGE_URL "http://edk2.tianocore.org/toolkit/python"
/* Define to the version of this package. */ /* Define to the version of this package. */
#define PACKAGE_VERSION "V0.2" #define PACKAGE_VERSION "V0.8"
/* Define if POSIX semaphores aren't enabled on your system */ /* Define if POSIX semaphores aren't enabled on your system */
#define POSIX_SEMAPHORES_NOT_ENABLED 1 #define POSIX_SEMAPHORES_NOT_ENABLED 1
@ -1091,7 +1091,7 @@
/* Define if you want wctype.h functions to be used instead of the one /* Define if you want wctype.h functions to be used instead of the one
supplied by Python itself. (see Include/unicodectype.h). */ supplied by Python itself. (see Include/unicodectype.h). */
#undef WANT_WCTYPE_FUNCTIONS #define WANT_WCTYPE_FUNCTIONS 1
/* Define if WINDOW in curses.h offers a field _flags. */ /* Define if WINDOW in curses.h offers a field _flags. */
#undef WINDOW_HAS_FLAGS #undef WINDOW_HAS_FLAGS
@ -1160,7 +1160,9 @@
#undef _MINIX #undef _MINIX
/* Define on NetBSD to activate all library features */ /* Define on NetBSD to activate all library features */
#define _NETBSD_SOURCE #ifndef _NETBSD_SOURCE
#define _NETBSD_SOURCE 1
#endif
/* Define _OSF_SOURCE to get the makedev macro. */ /* Define _OSF_SOURCE to get the makedev macro. */
#undef _OSF_SOURCE #undef _OSF_SOURCE

View File

@ -1,7 +1,7 @@
/** @file /** @file
Manually generated Python Configuration file for EDK II. Manually generated Python Configuration file for EDK II.
Copyright (c) 2011, Intel Corporation. All rights reserved.<BR> Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution. the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at The full text of the license may be found at
@ -15,10 +15,7 @@
#include <Uefi.h> #include <Uefi.h>
/* Define to indicate that code is being built to run in the UEFI Environment. */ #define PLATFORM "uefi"
#define UEFI_ENV EFI_SYSTEM_TABLE_REVISION
#define PLATFORM "UEFI"
/* Define if building universal (internal helper macro) */ /* Define if building universal (internal helper macro) */
#undef AC_APPLE_UNIVERSAL_BUILD #undef AC_APPLE_UNIVERSAL_BUILD
@ -809,6 +806,9 @@
/* Define to 1 if you have the <sys/wait.h> header file. */ /* Define to 1 if you have the <sys/wait.h> header file. */
#undef HAVE_SYS_WAIT_H #undef HAVE_SYS_WAIT_H
/* Define to 1 if you have the system() command. */
#define HAVE_SYSTEM 1
/* Define to 1 if you have the `tcgetpgrp' function. */ /* Define to 1 if you have the `tcgetpgrp' function. */
#undef HAVE_TCGETPGRP #undef HAVE_TCGETPGRP
@ -934,7 +934,7 @@
#define PACKAGE_NAME "EDK II Python Package" #define PACKAGE_NAME "EDK II Python Package"
/* Define to the full name and version of this package. */ /* Define to the full name and version of this package. */
#define PACKAGE_STRING "EDK II Python Package V0.2" #define PACKAGE_STRING "EDK II Python Package V0.8"
/* Define to the one symbol short name of this package. */ /* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "EADK_Python" #define PACKAGE_TARNAME "EADK_Python"
@ -943,7 +943,7 @@
#define PACKAGE_URL "http://edk2.tianocore.org/toolkit/python" #define PACKAGE_URL "http://edk2.tianocore.org/toolkit/python"
/* Define to the version of this package. */ /* Define to the version of this package. */
#define PACKAGE_VERSION "V0.2" #define PACKAGE_VERSION "V0.8"
/* Define if POSIX semaphores aren't enabled on your system */ /* Define if POSIX semaphores aren't enabled on your system */
#define POSIX_SEMAPHORES_NOT_ENABLED 1 #define POSIX_SEMAPHORES_NOT_ENABLED 1
@ -1091,7 +1091,7 @@
/* Define if you want wctype.h functions to be used instead of the one /* Define if you want wctype.h functions to be used instead of the one
supplied by Python itself. (see Include/unicodectype.h). */ supplied by Python itself. (see Include/unicodectype.h). */
#undef WANT_WCTYPE_FUNCTIONS #define WANT_WCTYPE_FUNCTIONS 1
/* Define if WINDOW in curses.h offers a field _flags. */ /* Define if WINDOW in curses.h offers a field _flags. */
#undef WINDOW_HAS_FLAGS #undef WINDOW_HAS_FLAGS
@ -1160,7 +1160,9 @@
#undef _MINIX #undef _MINIX
/* Define on NetBSD to activate all library features */ /* Define on NetBSD to activate all library features */
#define _NETBSD_SOURCE #ifndef _NETBSD_SOURCE
#define _NETBSD_SOURCE 1
#endif
/* Define _OSF_SOURCE to get the makedev macro. */ /* Define _OSF_SOURCE to get the makedev macro. */
#undef _OSF_SOURCE #undef _OSF_SOURCE

View File

@ -1,7 +1,7 @@
/** @file /** @file
Operating system dependencies. Operating system dependencies.
Copyright (c) 2011, Intel Corporation. All rights reserved.<BR> Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution. the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at The full text of the license may be found at
@ -18,7 +18,7 @@ extern "C" {
/* Mod by chrish: QNX has WATCOM, but isn't DOS */ /* Mod by chrish: QNX has WATCOM, but isn't DOS */
#if !defined(__QNX__) && !defined(UEFI_ENV) #if !defined(__QNX__) && !defined(UEFI_C_SOURCE)
#if defined(MS_WINDOWS) || defined(__BORLANDC__) || defined(__WATCOMC__) || defined(__DJGPP__) || defined(PYOS_OS2) #if defined(MS_WINDOWS) || defined(__BORLANDC__) || defined(__WATCOMC__) || defined(__DJGPP__) || defined(PYOS_OS2)
#if defined(PYOS_OS2) && defined(PYCC_GCC) #if defined(PYOS_OS2) && defined(PYCC_GCC)
#define MAXPATHLEN 260 #define MAXPATHLEN 260
@ -57,7 +57,7 @@ extern "C" {
/* Search path entry delimiter */ /* Search path entry delimiter */
#ifndef DELIM #ifndef DELIM
#ifdef UEFI_ENV #ifdef UEFI_C_SOURCE
#define DELIM ';' #define DELIM ';'
#define DELIM_STR ";" #define DELIM_STR ";"
#else #else

View File

@ -111,7 +111,7 @@ seq2set(PyObject *seq, fd_set *set, pylist fd2obj[FD_SETSIZE + 1])
v = PyObject_AsFileDescriptor( o ); v = PyObject_AsFileDescriptor( o );
if (v == -1) goto finally; if (v == -1) goto finally;
#if defined(_MSC_VER) && !defined(UEFI_ENV) #if defined(_MSC_VER) && !defined(UEFI_C_SOURCE)
max = 0; /* not used for Win32 */ max = 0; /* not used for Win32 */
#else /* !_MSC_VER */ #else /* !_MSC_VER */
if (v < 0 || v >= FD_SETSIZE) { if (v < 0 || v >= FD_SETSIZE) {
@ -164,7 +164,7 @@ set2list(fd_set *set, pylist fd2obj[FD_SETSIZE + 1])
for (j = 0; fd2obj[j].sentinel >= 0; j++) { for (j = 0; fd2obj[j].sentinel >= 0; j++) {
fd = fd2obj[j].fd; fd = fd2obj[j].fd;
if (FD_ISSET(fd, set)) { if (FD_ISSET(fd, set)) {
#if !defined(_MSC_VER) || defined(UEFI_ENV) #if !defined(_MSC_VER) || defined(UEFI_C_SOURCE)
if (fd > FD_SETSIZE) { if (fd > FD_SETSIZE) {
PyErr_SetString(PyExc_SystemError, PyErr_SetString(PyExc_SystemError,
"filedescriptor out of range returned in select()"); "filedescriptor out of range returned in select()");

View File

@ -8,7 +8,7 @@
# include <sys/socket.h> # include <sys/socket.h>
# endif # endif
# include <netinet/in.h> # include <netinet/in.h>
# if !(defined(UEFI_ENV) || defined(__BEOS__) || defined(__CYGWIN__) || (defined(PYOS_OS2) && defined(PYCC_VACPP))) # if !(defined(UEFI_C_SOURCE) || defined(__BEOS__) || defined(__CYGWIN__) || (defined(PYOS_OS2) && defined(PYCC_VACPP)))
# include <netinet/tcp.h> # include <netinet/tcp.h>
# endif # endif

View File

@ -1,6 +1,6 @@
/* zutil.h -- internal interface and configuration of the compression library /* zutil.h -- internal interface and configuration of the compression library
Copyright (c) 2011, Intel Corporation. All rights reserved.<BR> Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution. the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at The full text of the license may be found at
@ -161,7 +161,7 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
# define fdopen(fd,mode) NULL /* No fdopen() */ # define fdopen(fd,mode) NULL /* No fdopen() */
#endif #endif
#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined(UEFI_ENV) #if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined(UEFI_C_SOURCE)
# if defined(_WIN32_WCE) # if defined(_WIN32_WCE)
# define fdopen(fd,mode) NULL /* No fdopen() */ # define fdopen(fd,mode) NULL /* No fdopen() */
# ifndef _PTRDIFF_T_DEFINED # ifndef _PTRDIFF_T_DEFINED

View File

@ -13,13 +13,15 @@
## ##
[Defines] [Defines]
INF_VERSION = 0x00010006 INF_VERSION = 0x00010016
BASE_NAME = Python BASE_NAME = Python
FILE_GUID = ca5627c4-51ba-4dcb-ac62-c076ebd37ddb FILE_GUID = ca5627c4-51ba-4dcb-ac62-c076ebd37ddb
MODULE_TYPE = UEFI_APPLICATION MODULE_TYPE = UEFI_APPLICATION
VERSION_STRING = 0.1 VERSION_STRING = 0.8
ENTRY_POINT = ShellCEntryLib ENTRY_POINT = ShellCEntryLib
DEFINE PYTHON_VERSION = 2.7.2
# #
# VALID_ARCHITECTURES = IA32 X64 IPF # VALID_ARCHITECTURES = IA32 X64 IPF
# #
@ -30,6 +32,7 @@
[LibraryClasses] [LibraryClasses]
UefiLib UefiLib
DebugLib
LibC LibC
LibString LibString
LibStdio LibStdio
@ -42,6 +45,10 @@
EfiSocketLib EfiSocketLib
DevShell DevShell
[FixedPcd]
gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0F
gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000040
[Sources] [Sources]
#EFI -- EFI specific code #EFI -- EFI specific code
Efi/config.c Efi/config.c
@ -49,189 +56,187 @@
Efi/getpath.c Efi/getpath.c
#Parser #Parser
Python-2.7.2/Parser/acceler.c Python-$(PYTHON_VERSION)/Parser/acceler.c
Python-2.7.2/Parser/bitset.c Python-$(PYTHON_VERSION)/Parser/bitset.c
Python-2.7.2/Parser/firstsets.c Python-$(PYTHON_VERSION)/Parser/firstsets.c
Python-2.7.2/Parser/grammar.c Python-$(PYTHON_VERSION)/Parser/grammar.c
Python-2.7.2/Parser/grammar1.c Python-$(PYTHON_VERSION)/Parser/grammar1.c
Python-2.7.2/Parser/listnode.c Python-$(PYTHON_VERSION)/Parser/listnode.c
Python-2.7.2/Parser/metagrammar.c Python-$(PYTHON_VERSION)/Parser/metagrammar.c
Python-2.7.2/Parser/myreadline.c Python-$(PYTHON_VERSION)/Parser/myreadline.c
Python-2.7.2/Parser/node.c Python-$(PYTHON_VERSION)/Parser/node.c
Python-2.7.2/Parser/parser.c Python-$(PYTHON_VERSION)/Parser/parser.c
Python-2.7.2/Parser/parsetok.c Python-$(PYTHON_VERSION)/Parser/parsetok.c
Python-2.7.2/Parser/tokenizer.c Python-$(PYTHON_VERSION)/Parser/tokenizer.c
#Python #Python
PyMod-2.7.2/Python/getcopyright.c PyMod-$(PYTHON_VERSION)/Python/getcopyright.c
PyMod-2.7.2/Python/marshal.c PyMod-$(PYTHON_VERSION)/Python/marshal.c
Python-2.7.2/Python/_warnings.c Python-$(PYTHON_VERSION)/Python/_warnings.c
Python-2.7.2/Python/asdl.c Python-$(PYTHON_VERSION)/Python/asdl.c
Python-2.7.2/Python/ast.c Python-$(PYTHON_VERSION)/Python/ast.c
Python-2.7.2/Python/bltinmodule.c Python-$(PYTHON_VERSION)/Python/bltinmodule.c
Python-2.7.2/Python/ceval.c Python-$(PYTHON_VERSION)/Python/ceval.c
Python-2.7.2/Python/codecs.c Python-$(PYTHON_VERSION)/Python/codecs.c
Python-2.7.2/Python/compile.c Python-$(PYTHON_VERSION)/Python/compile.c
Python-2.7.2/Python/dtoa.c Python-$(PYTHON_VERSION)/Python/dtoa.c
Python-2.7.2/Python/dynload_stub.c Python-$(PYTHON_VERSION)/Python/dynload_stub.c
Python-2.7.2/Python/errors.c Python-$(PYTHON_VERSION)/Python/errors.c
Python-2.7.2/Python/formatter_string.c Python-$(PYTHON_VERSION)/Python/formatter_string.c
Python-2.7.2/Python/formatter_unicode.c Python-$(PYTHON_VERSION)/Python/formatter_unicode.c
Python-2.7.2/Python/frozen.c Python-$(PYTHON_VERSION)/Python/frozen.c
Python-2.7.2/Python/future.c Python-$(PYTHON_VERSION)/Python/future.c
Python-2.7.2/Python/getargs.c Python-$(PYTHON_VERSION)/Python/getargs.c
Python-2.7.2/Python/getcompiler.c Python-$(PYTHON_VERSION)/Python/getcompiler.c
Python-2.7.2/Python/getopt.c Python-$(PYTHON_VERSION)/Python/getopt.c
Python-2.7.2/Python/getplatform.c Python-$(PYTHON_VERSION)/Python/getplatform.c
Python-2.7.2/Python/getversion.c Python-$(PYTHON_VERSION)/Python/getversion.c
Python-2.7.2/Python/graminit.c Python-$(PYTHON_VERSION)/Python/graminit.c
Python-2.7.2/Python/import.c Python-$(PYTHON_VERSION)/Python/import.c
Python-2.7.2/Python/importdl.c Python-$(PYTHON_VERSION)/Python/importdl.c
Python-2.7.2/Python/modsupport.c Python-$(PYTHON_VERSION)/Python/modsupport.c
Python-2.7.2/Python/mysnprintf.c Python-$(PYTHON_VERSION)/Python/mysnprintf.c
Python-2.7.2/Python/mystrtoul.c Python-$(PYTHON_VERSION)/Python/mystrtoul.c
Python-2.7.2/Python/peephole.c Python-$(PYTHON_VERSION)/Python/peephole.c
Python-2.7.2/Python/pyarena.c Python-$(PYTHON_VERSION)/Python/pyarena.c
Python-2.7.2/Python/pyctype.c Python-$(PYTHON_VERSION)/Python/pyctype.c
Python-2.7.2/Python/pyfpe.c Python-$(PYTHON_VERSION)/Python/pyfpe.c
Python-2.7.2/Python/pymath.c Python-$(PYTHON_VERSION)/Python/pymath.c
Python-2.7.2/Python/pystate.c Python-$(PYTHON_VERSION)/Python/pystate.c
Python-2.7.2/Python/pystrcmp.c Python-$(PYTHON_VERSION)/Python/pystrcmp.c
Python-2.7.2/Python/pystrtod.c Python-$(PYTHON_VERSION)/Python/pystrtod.c
Python-2.7.2/Python/Python-ast.c Python-$(PYTHON_VERSION)/Python/Python-ast.c
Python-2.7.2/Python/pythonrun.c Python-$(PYTHON_VERSION)/Python/pythonrun.c
Python-2.7.2/Python/structmember.c Python-$(PYTHON_VERSION)/Python/structmember.c
Python-2.7.2/Python/symtable.c Python-$(PYTHON_VERSION)/Python/symtable.c
Python-2.7.2/Python/sysmodule.c Python-$(PYTHON_VERSION)/Python/sysmodule.c
Python-2.7.2/Python/traceback.c Python-$(PYTHON_VERSION)/Python/traceback.c
# Python-$(PYTHON_VERSION)/Python/thread.c
#Modules -- See Efi/config.c
PyMod-2.7.2/Modules/_sre.c
PyMod-2.7.2/Modules/errnomodule.c
PyMod-2.7.2/Modules/selectmodule.c
Python-2.7.2/Modules/getbuildinfo.c
Python-2.7.2/Modules/main.c
Python-2.7.2/Modules/python.c
Python-2.7.2/Modules/_bisectmodule.c
Python-2.7.2/Modules/_codecsmodule.c
Python-2.7.2/Modules/_collectionsmodule.c
Python-2.7.2/Modules/_functoolsmodule.c
Python-2.7.2/Modules/_heapqmodule.c
Python-2.7.2/Modules/_json.c
Python-2.7.2/Modules/_math.c
Python-2.7.2/Modules/_randommodule.c
Python-2.7.2/Modules/_struct.c
Python-2.7.2/Modules/_weakref.c
Python-2.7.2/Modules/arraymodule.c
Python-2.7.2/Modules/binascii.c
Python-2.7.2/Modules/cmathmodule.c
Python-2.7.2/Modules/cPickle.c
Python-2.7.2/Modules/cStringIO.c
Python-2.7.2/Modules/datetimemodule.c
Python-2.7.2/Modules/future_builtins.c
Python-2.7.2/Modules/gcmodule.c
Python-2.7.2/Modules/itertoolsmodule.c
Python-2.7.2/Modules/mathmodule.c
Python-2.7.2/Modules/md5.c
Python-2.7.2/Modules/md5module.c
Python-2.7.2/Modules/operator.c
Python-2.7.2/Modules/parsermodule.c
Python-2.7.2/Modules/shamodule.c
Python-2.7.2/Modules/sha256module.c
Python-2.7.2/Modules/sha512module.c
Python-2.7.2/Modules/signalmodule.c
Python-2.7.2/Modules/socketmodule.c
Python-2.7.2/Modules/stropmodule.c
Python-2.7.2/Modules/timemodule.c
Python-2.7.2/Modules/xxsubtype.c
# Python-$(PYTHON_VERSION)/Modules/_csv.c
# Python-$(PYTHON_VERSION)/Modules/symtablemodule.c
# Python-$(PYTHON_VERSION)/Modules/_localemodule.c
# Python-$(PYTHON_VERSION)/Modules/rotatingtree.c
# Python-$(PYTHON_VERSION)/Modules/threadmodule.c
# Python-$(PYTHON_VERSION)/Modules/zipimport.c
# Python-$(PYTHON_VERSION)/Modules/zlibmodule.c
#Modules/cjkcodecs
Python-2.7.2/Modules/cjkcodecs/multibytecodec.c
Python-2.7.2/Modules/cjkcodecs/_codecs_cn.c
Python-2.7.2/Modules/cjkcodecs/_codecs_hk.c
Python-2.7.2/Modules/cjkcodecs/_codecs_iso2022.c
Python-2.7.2/Modules/cjkcodecs/_codecs_jp.c
Python-2.7.2/Modules/cjkcodecs/_codecs_kr.c
Python-2.7.2/Modules/cjkcodecs/_codecs_tw.c
#Modules/_io
Python-2.7.2/Modules/_io/_iomodule.c
Python-2.7.2/Modules/_io/bufferedio.c
Python-2.7.2/Modules/_io/bytesio.c
Python-2.7.2/Modules/_io/fileio.c
Python-2.7.2/Modules/_io/iobase.c
Python-2.7.2/Modules/_io/stringio.c
Python-2.7.2/Modules/_io/textio.c
#Modules/zlib
# Python-$(PYTHON_VERSION)/Modules/zlib/adler32.c
# Python-$(PYTHON_VERSION)/Modules/zlib/compress.c
# Python-$(PYTHON_VERSION)/Modules/zlib/crc32.c
# Python-$(PYTHON_VERSION)/Modules/zlib/deflate.c
# Python-$(PYTHON_VERSION)/Modules/zlib/gzio.c
# Python-$(PYTHON_VERSION)/Modules/zlib/infback.c
# Python-$(PYTHON_VERSION)/Modules/zlib/inffast.c
# Python-$(PYTHON_VERSION)/Modules/zlib/inflate.c
# Python-$(PYTHON_VERSION)/Modules/zlib/inftrees.c
# Python-$(PYTHON_VERSION)/Modules/zlib/trees.c
# Python-$(PYTHON_VERSION)/Modules/zlib/uncompr.c
# Python-$(PYTHON_VERSION)/Modules/zlib/zutil.c
#Objects #Objects
Python-2.7.2/Objects/abstract.c Python-$(PYTHON_VERSION)/Objects/abstract.c
Python-2.7.2/Objects/boolobject.c Python-$(PYTHON_VERSION)/Objects/boolobject.c
Python-2.7.2/Objects/bufferobject.c Python-$(PYTHON_VERSION)/Objects/bufferobject.c
Python-2.7.2/Objects/bytearrayobject.c Python-$(PYTHON_VERSION)/Objects/bytearrayobject.c
Python-2.7.2/Objects/bytes_methods.c Python-$(PYTHON_VERSION)/Objects/bytes_methods.c
Python-2.7.2/Objects/capsule.c Python-$(PYTHON_VERSION)/Objects/capsule.c
Python-2.7.2/Objects/cellobject.c Python-$(PYTHON_VERSION)/Objects/cellobject.c
Python-2.7.2/Objects/classobject.c Python-$(PYTHON_VERSION)/Objects/classobject.c
Python-2.7.2/Objects/cobject.c Python-$(PYTHON_VERSION)/Objects/cobject.c
Python-2.7.2/Objects/codeobject.c Python-$(PYTHON_VERSION)/Objects/codeobject.c
Python-2.7.2/Objects/complexobject.c Python-$(PYTHON_VERSION)/Objects/complexobject.c
Python-2.7.2/Objects/descrobject.c Python-$(PYTHON_VERSION)/Objects/descrobject.c
Python-2.7.2/Objects/dictobject.c Python-$(PYTHON_VERSION)/Objects/dictobject.c
Python-2.7.2/Objects/enumobject.c Python-$(PYTHON_VERSION)/Objects/enumobject.c
Python-2.7.2/Objects/exceptions.c Python-$(PYTHON_VERSION)/Objects/exceptions.c
Python-2.7.2/Objects/fileobject.c Python-$(PYTHON_VERSION)/Objects/fileobject.c
Python-2.7.2/Objects/floatobject.c Python-$(PYTHON_VERSION)/Objects/floatobject.c
Python-2.7.2/Objects/frameobject.c Python-$(PYTHON_VERSION)/Objects/frameobject.c
Python-2.7.2/Objects/funcobject.c Python-$(PYTHON_VERSION)/Objects/funcobject.c
Python-2.7.2/Objects/genobject.c Python-$(PYTHON_VERSION)/Objects/genobject.c
Python-2.7.2/Objects/intobject.c Python-$(PYTHON_VERSION)/Objects/intobject.c
Python-2.7.2/Objects/iterobject.c Python-$(PYTHON_VERSION)/Objects/iterobject.c
Python-2.7.2/Objects/listobject.c Python-$(PYTHON_VERSION)/Objects/listobject.c
Python-2.7.2/Objects/longobject.c Python-$(PYTHON_VERSION)/Objects/longobject.c
Python-2.7.2/Objects/memoryobject.c Python-$(PYTHON_VERSION)/Objects/memoryobject.c
Python-2.7.2/Objects/methodobject.c Python-$(PYTHON_VERSION)/Objects/methodobject.c
Python-2.7.2/Objects/moduleobject.c Python-$(PYTHON_VERSION)/Objects/moduleobject.c
Python-2.7.2/Objects/object.c Python-$(PYTHON_VERSION)/Objects/object.c
Python-2.7.2/Objects/obmalloc.c Python-$(PYTHON_VERSION)/Objects/obmalloc.c
Python-2.7.2/Objects/rangeobject.c Python-$(PYTHON_VERSION)/Objects/rangeobject.c
Python-2.7.2/Objects/setobject.c Python-$(PYTHON_VERSION)/Objects/setobject.c
Python-2.7.2/Objects/sliceobject.c Python-$(PYTHON_VERSION)/Objects/sliceobject.c
Python-2.7.2/Objects/stringobject.c Python-$(PYTHON_VERSION)/Objects/stringobject.c
Python-2.7.2/Objects/structseq.c Python-$(PYTHON_VERSION)/Objects/structseq.c
Python-2.7.2/Objects/tupleobject.c Python-$(PYTHON_VERSION)/Objects/tupleobject.c
Python-2.7.2/Objects/typeobject.c Python-$(PYTHON_VERSION)/Objects/typeobject.c
Python-2.7.2/Objects/unicodectype.c Python-$(PYTHON_VERSION)/Objects/unicodectype.c
Python-2.7.2/Objects/unicodeobject.c Python-$(PYTHON_VERSION)/Objects/unicodeobject.c
Python-2.7.2/Objects/weakrefobject.c Python-$(PYTHON_VERSION)/Objects/weakrefobject.c
#Modules -- See Efi/config.c
# Mandatory Modules -- These must always be built in.
PyMod-$(PYTHON_VERSION)/Modules/errnomodule.c
Python-$(PYTHON_VERSION)/Modules/_functoolsmodule.c
Python-$(PYTHON_VERSION)/Modules/gcmodule.c
Python-$(PYTHON_VERSION)/Modules/getbuildinfo.c
Python-$(PYTHON_VERSION)/Modules/main.c
Python-$(PYTHON_VERSION)/Modules/python.c
# Optional Modules -- See Python/Efi/config.c
PyMod-$(PYTHON_VERSION)/Modules/_sre.c #
PyMod-$(PYTHON_VERSION)/Modules/selectmodule.c #
#
Python-$(PYTHON_VERSION)/Modules/_bisectmodule.c #
Python-$(PYTHON_VERSION)/Modules/_codecsmodule.c #
Python-$(PYTHON_VERSION)/Modules/_collectionsmodule.c #
Python-$(PYTHON_VERSION)/Modules/_heapqmodule.c #
Python-$(PYTHON_VERSION)/Modules/_json.c #
Python-$(PYTHON_VERSION)/Modules/_localemodule.c #
Python-$(PYTHON_VERSION)/Modules/_math.c #
Python-$(PYTHON_VERSION)/Modules/_randommodule.c #
Python-$(PYTHON_VERSION)/Modules/_struct.c #
Python-$(PYTHON_VERSION)/Modules/_weakref.c #
Python-$(PYTHON_VERSION)/Modules/arraymodule.c #
Python-$(PYTHON_VERSION)/Modules/binascii.c #
Python-$(PYTHON_VERSION)/Modules/cmathmodule.c #
Python-$(PYTHON_VERSION)/Modules/cPickle.c #
Python-$(PYTHON_VERSION)/Modules/cStringIO.c #
Python-$(PYTHON_VERSION)/Modules/datetimemodule.c #
Python-$(PYTHON_VERSION)/Modules/future_builtins.c #
Python-$(PYTHON_VERSION)/Modules/itertoolsmodule.c #
Python-$(PYTHON_VERSION)/Modules/mathmodule.c #
Python-$(PYTHON_VERSION)/Modules/md5.c #
Python-$(PYTHON_VERSION)/Modules/md5module.c #
Python-$(PYTHON_VERSION)/Modules/operator.c #
Python-$(PYTHON_VERSION)/Modules/parsermodule.c #
Python-$(PYTHON_VERSION)/Modules/shamodule.c #
Python-$(PYTHON_VERSION)/Modules/sha256module.c #
Python-$(PYTHON_VERSION)/Modules/sha512module.c #
Python-$(PYTHON_VERSION)/Modules/signalmodule.c #
Python-$(PYTHON_VERSION)/Modules/socketmodule.c #
Python-$(PYTHON_VERSION)/Modules/stropmodule.c #
Python-$(PYTHON_VERSION)/Modules/timemodule.c #
Python-$(PYTHON_VERSION)/Modules/xxsubtype.c #
Python-$(PYTHON_VERSION)/Modules/zipimport.c #
Python-$(PYTHON_VERSION)/Modules/zlibmodule.c #
# Python-$(PYTHON_VERSION)/Modules/_csv.c #
# Python-$(PYTHON_VERSION)/Modules/symtablemodule.c #
#Modules/cjkcodecs
Python-$(PYTHON_VERSION)/Modules/cjkcodecs/multibytecodec.c #
Python-$(PYTHON_VERSION)/Modules/cjkcodecs/_codecs_cn.c #
Python-$(PYTHON_VERSION)/Modules/cjkcodecs/_codecs_hk.c #
Python-$(PYTHON_VERSION)/Modules/cjkcodecs/_codecs_iso2022.c #
Python-$(PYTHON_VERSION)/Modules/cjkcodecs/_codecs_jp.c #
Python-$(PYTHON_VERSION)/Modules/cjkcodecs/_codecs_kr.c #
Python-$(PYTHON_VERSION)/Modules/cjkcodecs/_codecs_tw.c #
#Modules/_io
Python-$(PYTHON_VERSION)/Modules/_io/_iomodule.c #
Python-$(PYTHON_VERSION)/Modules/_io/bufferedio.c #
Python-$(PYTHON_VERSION)/Modules/_io/bytesio.c #
Python-$(PYTHON_VERSION)/Modules/_io/fileio.c #
Python-$(PYTHON_VERSION)/Modules/_io/iobase.c #
Python-$(PYTHON_VERSION)/Modules/_io/stringio.c #
Python-$(PYTHON_VERSION)/Modules/_io/textio.c #
#Modules/zlib
Python-$(PYTHON_VERSION)/Modules/zlib/adler32.c #
Python-$(PYTHON_VERSION)/Modules/zlib/compress.c #
Python-$(PYTHON_VERSION)/Modules/zlib/crc32.c #
Python-$(PYTHON_VERSION)/Modules/zlib/deflate.c #
Python-$(PYTHON_VERSION)/Modules/zlib/gzio.c #
Python-$(PYTHON_VERSION)/Modules/zlib/infback.c #
Python-$(PYTHON_VERSION)/Modules/zlib/inffast.c #
Python-$(PYTHON_VERSION)/Modules/zlib/inflate.c #
Python-$(PYTHON_VERSION)/Modules/zlib/inftrees.c #
Python-$(PYTHON_VERSION)/Modules/zlib/trees.c #
Python-$(PYTHON_VERSION)/Modules/zlib/uncompr.c #
Python-$(PYTHON_VERSION)/Modules/zlib/zutil.c #
[BuildOptions] [BuildOptions]
MSFT:*_*_IA32_CC_FLAGS = /Oi- /wd4018 /wd4054 /wd4055 /wd4101 /wd4131 /wd4152 /wd4204 /wd4210 /wd4244 /wd4267 /wd4305 /wd4310 /wd4389 /wd4701 /wd4702 /wd4706 /I$(WORKSPACE)\AppPkg\Applications\Python\Ia32 /I$(WORKSPACE)\AppPkg\Applications\Python\Efi /I$(WORKSPACE)\AppPkg\Applications\Python\Python-2.7.2\Include MSFT:*_*_IA32_CC_FLAGS = /Oi- /wd4018 /wd4054 /wd4055 /wd4101 /wd4131 /wd4152 /wd4204 /wd4210 /wd4244 /wd4267 /wd4305 /wd4310 /wd4389 /wd4701 /wd4702 /wd4706 /I$(WORKSPACE)\AppPkg\Applications\Python\Ia32 /I$(WORKSPACE)\AppPkg\Applications\Python\Efi /I$(WORKSPACE)\AppPkg\Applications\Python\Python-$(PYTHON_VERSION)\Include
MSFT:*_*_X64_CC_FLAGS = /Oi- /wd4018 /wd4054 /wd4055 /wd4101 /wd4131 /wd4152 /wd4204 /wd4210 /wd4244 /wd4267 /wd4305 /wd4310 /wd4389 /wd4701 /wd4702 /wd4706 /I$(WORKSPACE)\AppPkg\Applications\Python\X64 /I$(WORKSPACE)\AppPkg\Applications\Python\Efi /I$(WORKSPACE)\AppPkg\Applications\Python\Python-2.7.2\Include MSFT:*_*_X64_CC_FLAGS = /Oi- /wd4018 /wd4054 /wd4055 /wd4101 /wd4131 /wd4152 /wd4204 /wd4210 /wd4244 /wd4267 /wd4305 /wd4310 /wd4389 /wd4701 /wd4702 /wd4706 /I$(WORKSPACE)\AppPkg\Applications\Python\X64 /I$(WORKSPACE)\AppPkg\Applications\Python\Efi /I$(WORKSPACE)\AppPkg\Applications\Python\Python-$(PYTHON_VERSION)\Include
GCC:*_*_IPF_SYMRENAME_FLAGS = --redefine-syms=$(WORKSPACE)/StdLib/GccSymRename.txt GCC:*_*_IPF_SYMRENAME_FLAGS = --redefine-syms=$(WORKSPACE)/StdLib/GccSymRename.txt

View File

@ -0,0 +1,194 @@
EDK II Python
ReadMe
Beta Release
23 Mar. 2012
1. OVERVIEW
===========
This document is devoted to general information on building and setup of the
Python environment for UEFI 2.3, the invocation of the interpreter, and things
that make working with Python easier.
It is assumed that you already have either UDK2010 or a current snapshot of
the EDK II sources from www.tianocore.org, and that you can successfully build
packages within that distribution.
2. Release Notes
================
1) There is no input line editing. Backspace, ^C, etc. do not work.
2) All C extension modules must be statically linked (built in)
3) The site and os modules must exist as discrete files in ...\lib\python.27
3. Getting and Building the latest version of Python
======================================================
3.1 Getting Python
==================
Currently only version 2.7.2 of the CPython distribution is supported. The
source code can be downloaded from http://www.python.org/download/source/.
A. Within your EDK II development tree, extract the Python distribution into
AppPkg/Applications/Python. This should create the
AppPkg/Applications/Python/Python-2.7.2 directory.
B. Copy the files from PyMod-2.7.2 into the corresponding directories within
the Python-2.7.2 tree. This will overwrite existing files with files
modified for UEFI usage.
3.2 Building Python
===================
A. Edit Efi/config.c to enable the built-in modules you need.
Mandatory Built-in Modules:
edk2 errno imp marshal
Additional built-in modules which are required to use the help()
functionality provided by PyDoc, are:
_codecs _collections _functools _random
_sre _struct _weakref binascii
cStringIO gc itertools math
operator time
B. Edit AppPkg/AppPkg.dsc to enable (uncomment) the PythonCore.inf line
within the [Components] section.
C. Build AppPkg, which includes Python, using the standard "build" command:
For example, to build Python for an X64 CPU architecture:
build -a X64 -p AppPkg\AppPkg.dsc
4. Python-related paths and files
=================================
Python depends upon the existence of several directories and files on the
target system.
\EFI Root of the UEFI system area.
|- \Tools Location of the Python.efi executable.
|- \Boot UEFI specified Boot directory.
|- \StdLib Root of the Standard Libraries sub-tree.
|- \etc Configuration files used by libraries.
|- \tmp Temporary files created by tmpfile(), etc.
|- \lib Root of the libraries tree.
|- \python.27 Directory containing the Python library modules.
|- \lib-dynload Dynamically loadable Python extensions.
|- \site-packages Site-specific packages and modules.
5. Installing Python
====================
These directories, on the target system, are populated from the development
system as follows:
* \Efi\Tools receives a copy of Build/AppPkg/DEBUG_VS2005/X64/Python.efi.
^^^^^ ^^^^^^
Modify the host path to match the your build type and compiler.
* The \Efi\StdLib\etc directory is populated from the StdLib/Efi/StdLib/etc
source directory.
* Directory \Efi\StdLib\lib\python.27 is populated with packages and modules
from the AppPkg/Applications/Python/Python-2.7.2/Lib directory.
The recommended minimum set of modules (.py, .pyc, and/or .pyo):
os stat ntpath warnings traceback
site types copy_reg linecache genericpath
* Python C Extension Modules built as dynamically loadable extensions go into
the \Efi\StdLib\lib\python.27\lib-dynload directory.
6. Example: Enabling socket support
===================================
1. enable {"_socket", init_socket}, in Efi\config.c
2. enable Python-2.7.2/Modules/socketmodule.c in PythonCore.inf.
3. copy socket.py over to /Efi/StdLib/lib/python.27 on your target system.
4. Make sure dependent modules are present(.py) or built in(.c):
functools, types, os, sys, warnings, cStringIO, StringIO, errno
5. build -a X64 -p AppPkg\AppPkg.dsc
6. copy Build\AppPkg\DEBUG_VS2005\X64\Python.efi to \Efi\Tools on your target system.
^^^^ Modify as needed
7. Supported C Modules
======================
Module Name C File(s)
=============== =============================================
_ast Python/Python-ast.c
_bisect Modules/_bisectmodule.c
_codecs Modules/_codecsmodule.c
_codecs_cn Modules/cjkcodecs/_codecs_cn.c
_codecs_hk Modules/cjkcodecs/_codecs_hk.c
_codecs_iso2022 Modules/cjkcodecs/_codecs_iso2022.c
_codecs_jp Modules/cjkcodecs/_codecs_jp
_codecs_kr Modules/cjkcodecs/_codecs_kr
_codecs_tw Modules/cjkcodecs/_codecs_tw
_collections Modules/_collectionsmodule.c
_csv Modules/_csv.c
_functools Modules/_functoolsmodule.c
_heapq Modules/_heapqmodule.c
_io Modules/_io/_iomodule.c Modules/_io/*
_json Modules/_json.c
_md5 Modules/md5module.c Modules/md5.c
_multibytecodec Modules/cjkcodecs/_multibytecodec.c
_random Modules/_randommodule.c
_sha Modules/shamodule.c
_sha256 Modules/sha256module.c
_sha512 Modules/sha512module.c
_socket Modules/socketmodule.c
_sre Modules/_sre.c
_struct Modules/_struct.c
_symtable Modules/symtablemodule.c
_weakref Modules/_weakref.c
array Modules/arraymodule.c
binascii Modules/binascii.c
cmath Modules/cmathmodule.c
cPickle Modules/cPickle.c
cStringIO Modules/cStringIO.c
datetime Modules/datetimemodule.c
edk2 Modules/Efi/edk2module.c
errno Modules/errnomodule.c
future_builtins Modules/future_builtins.c
gc Modules/gcmodule.c
imp Python/import.c
itertools Modules/itertoolsmodule.c
marshal Python/marshal.c
math Modules/mathmodule.c Modules/_math.c
operator Modules/operator.c
parser Modules/parsermodule.c
select Modules/selectmodule.c
signal Modules/signalmodule.c
strop Modules/stropmodule.c
time Modules/timemodule.c
xxsubtype Modules/xxsubtype.c
zipimport Modules/zipimport.c
zlib Modules/zlibmodule.c Modules/zlib/*
8. Tested Python Library Modules
================================
This is a partial list of the packages and modules of the Python Standard
Library that have been tested or used in some manner.
encodings genericpath.py sha.py
importlib getopt.py SimpleHTTPServer.py
json hashlib.py site.py
pydoc_data heapq.py socket.py
xml HTMLParser.py SocketServer.py
abc.py inspect.py sre.py
argparse.py io.py sre_compile.py
ast.py keyword.py sre_constants.py
atexit.py linecache.py sre_parse.py
BaseHTTPServer.py locale.py stat.py
binhex.py md5.py string.py
bisect.py modulefinder.py StringIO.py
calendar.py ntpath.py struct.py
cmd.py numbers.py textwrap.py
codecs.py optparse.py token.py
collections.py os.py tokenize.py
copy.py platform.py traceback.py
copy_reg.py posixpath.py types.py
csv.py pydoc.py warnings.py
dummy_thread.py random.py weakref.py
fileinput.py re.py xmllib.py
formatter.py repr.py zipfile.py
functools.py runpy.py
# # #

View File

@ -1,7 +1,7 @@
/** @file /** @file
Manually generated Python Configuration file for EDK II. Manually generated Python Configuration file for EDK II.
Copyright (c) 2011, Intel Corporation. All rights reserved.<BR> Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution. the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at The full text of the license may be found at
@ -15,10 +15,7 @@
#include <Uefi.h> #include <Uefi.h>
/* Define to indicate that code is being built to run in the UEFI Environment. */ #define PLATFORM "uefi"
#define UEFI_ENV EFI_SYSTEM_TABLE_REVISION
#define PLATFORM "UEFI"
/* Define if building universal (internal helper macro) */ /* Define if building universal (internal helper macro) */
#undef AC_APPLE_UNIVERSAL_BUILD #undef AC_APPLE_UNIVERSAL_BUILD
@ -813,6 +810,9 @@
/* Define to 1 if you have the <sys/wait.h> header file. */ /* Define to 1 if you have the <sys/wait.h> header file. */
#undef HAVE_SYS_WAIT_H #undef HAVE_SYS_WAIT_H
/* Define to 1 if you have the system() command. */
#define HAVE_SYSTEM 1
/* Define to 1 if you have the `tcgetpgrp' function. */ /* Define to 1 if you have the `tcgetpgrp' function. */
#undef HAVE_TCGETPGRP #undef HAVE_TCGETPGRP
@ -938,7 +938,7 @@
#define PACKAGE_NAME "EDK II Python Package" #define PACKAGE_NAME "EDK II Python Package"
/* Define to the full name and version of this package. */ /* Define to the full name and version of this package. */
#define PACKAGE_STRING "EDK II Python Package V0.2" #define PACKAGE_STRING "EDK II Python Package V0.8"
/* Define to the one symbol short name of this package. */ /* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "EADK_Python" #define PACKAGE_TARNAME "EADK_Python"
@ -947,7 +947,7 @@
#define PACKAGE_URL "http://edk2.tianocore.org/toolkit/python" #define PACKAGE_URL "http://edk2.tianocore.org/toolkit/python"
/* Define to the version of this package. */ /* Define to the version of this package. */
#define PACKAGE_VERSION "V0.2" #define PACKAGE_VERSION "V0.8"
/* Define if POSIX semaphores aren't enabled on your system */ /* Define if POSIX semaphores aren't enabled on your system */
#define POSIX_SEMAPHORES_NOT_ENABLED 1 #define POSIX_SEMAPHORES_NOT_ENABLED 1
@ -1095,7 +1095,7 @@
/* Define if you want wctype.h functions to be used instead of the one /* Define if you want wctype.h functions to be used instead of the one
supplied by Python itself. (see Include/unicodectype.h). */ supplied by Python itself. (see Include/unicodectype.h). */
#undef WANT_WCTYPE_FUNCTIONS #define WANT_WCTYPE_FUNCTIONS 1
/* Define if WINDOW in curses.h offers a field _flags. */ /* Define if WINDOW in curses.h offers a field _flags. */
#undef WINDOW_HAS_FLAGS #undef WINDOW_HAS_FLAGS
@ -1164,7 +1164,9 @@
#undef _MINIX #undef _MINIX
/* Define on NetBSD to activate all library features */ /* Define on NetBSD to activate all library features */
#define _NETBSD_SOURCE #ifndef _NETBSD_SOURCE
#define _NETBSD_SOURCE 1
#endif
/* Define _OSF_SOURCE to get the makedev macro. */ /* Define _OSF_SOURCE to get the makedev macro. */
#undef _OSF_SOURCE #undef _OSF_SOURCE

View File

@ -1,6 +1,15 @@
/* $NetBSD: param.h,v 1.61 2006/08/28 13:43:35 yamt Exp $ */ /** @file
Machine dependent constants for Intel IA32 Architecture.
Copyright (c) 2010-2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
/*-
* Copyright (c) 1990 The Regents of the University of California. * Copyright (c) 1990 The Regents of the University of California.
* All rights reserved. * All rights reserved.
* *
@ -31,29 +40,17 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* @(#)param.h 5.8 (Berkeley) 6/28/91 * @(#)param.h 5.8 (Berkeley) 6/28/91
* $NetBSD: param.h,v 1.61 2006/08/28 13:43:35 yamt Exp
*/ */
#ifndef _I386_PARAM_H_ #ifndef _I386_PARAM_H_
#define _I386_PARAM_H_ #define _I386_PARAM_H_
/* #define _MACHINE i386
* Machine dependent constants for Intel 386. #define MACHINE "i386"
*/ #define _MACHINE_ARCH i386
#define MACHINE_ARCH "i386"
#ifdef _KERNEL #define MID_MACHINE MID_I386
#ifdef _LOCORE
#include <machine/psl.h>
#else
#include <machine/cpu.h>
#endif
#endif
#define _MACHINE i386
#define MACHINE "i386"
#define _MACHINE_ARCH i386
#define MACHINE_ARCH "i386"
#define MID_MACHINE MID_I386
/* /*
* Round p (pointer or byte index) up to a correctly-aligned value * Round p (pointer or byte index) up to a correctly-aligned value
@ -63,58 +60,39 @@
* ALIGNED_POINTER is a boolean macro that checks whether an address * ALIGNED_POINTER is a boolean macro that checks whether an address
* is valid to fetch data elements of type t from on this architecture. * is valid to fetch data elements of type t from on this architecture.
* This does not reflect the optimal alignment, just the possibility * This does not reflect the optimal alignment, just the possibility
* (within reasonable limits). * (within reasonable limits).
* *
*/ */
#define ALIGNBYTES (sizeof(int) - 1) #define ALIGNBYTES (sizeof(int) - 1)
#define ALIGN(p) (((u_int)(u_long)(p) + ALIGNBYTES) &~ \ #define ALIGN(p) (((EFI_ULONG_T)(p) + ALIGNBYTES) & ~ALIGNBYTES)
ALIGNBYTES) #define ALIGNED_POINTER(p,t) 1
#define ALIGNED_POINTER(p,t) 1
#define PGSHIFT 12 /* LOG2(NBPG) */ #define PGSHIFT 12 /* LOG2(NBPG) */
#define NBPG (1 << PGSHIFT) /* bytes/page */ #define NBPG (1 << PGSHIFT) /* bytes/page */
#define PGOFSET (NBPG-1) /* byte offset into page */ #define PGOFSET (NBPG-1) /* byte offset into page */
#define NPTEPG (NBPG/(sizeof (pt_entry_t))) #define NPTEPG (NBPG/(sizeof (pt_entry_t)))
#if defined(_KERNEL_OPT) #define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */
#include "opt_kernbase.h" #define DEV_BSIZE (1 << DEV_BSHIFT)
#endif /* defined(_KERNEL_OPT) */ #define BLKDEV_IOSIZE 2048
#ifndef MAXPHYS
#ifdef KERNBASE_LOCORE #define MAXPHYS (64 * 1024) /* max raw I/O transfer size */
#error "You should only re-define KERNBASE"
#endif #endif
#ifndef KERNBASE #define SSIZE 1 /* initial stack size/NBPG */
#define KERNBASE 0xc0000000UL /* start of kernel virtual space */ #define SINCR 1 /* increment of stack/NBPG */
#endif
#define KERNTEXTOFF (KERNBASE + 0x100000) /* start of kernel text */
#define BTOPKERNBASE (KERNBASE >> PGSHIFT)
#define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */
#define DEV_BSIZE (1 << DEV_BSHIFT)
#define BLKDEV_IOSIZE 2048
#ifndef MAXPHYS
#define MAXPHYS (64 * 1024) /* max raw I/O transfer size */
#endif
#define SSIZE 1 /* initial stack size/NBPG */
#define SINCR 1 /* increment of stack/NBPG */
#ifdef _KERNEL_OPT
#include "opt_noredzone.h"
#endif
#ifndef UPAGES #ifndef UPAGES
#ifdef NOREDZONE #ifdef NOREDZONE
#define UPAGES 2 /* pages of u-area */ #define UPAGES 2 /* pages of u-area */
#else #else
#define UPAGES 3 #define UPAGES 3
#endif /*NOREDZONE */ #endif /*NOREDZONE */
#endif /* !defined(UPAGES) */ #endif /* !defined(UPAGES) */
#define USPACE (UPAGES * NBPG) /* total size of u-area */ #define USPACE (UPAGES * NBPG) /* total size of u-area */
#ifndef MSGBUFSIZE #ifndef MSGBUFSIZE
#define MSGBUFSIZE 4*NBPG /* default message buffer size */ #define MSGBUFSIZE 4*NBPG /* default message buffer size */
#endif #endif
/* /*
@ -124,51 +102,47 @@
* clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple * clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple
* of the hardware page size. * of the hardware page size.
*/ */
#define MSIZE 256 /* size of an mbuf */ #define MSIZE 256 /* size of an mbuf */
#ifndef MCLSHIFT #ifndef MCLSHIFT
#define MCLSHIFT 11 /* convert bytes to m_buf clusters */ #define MCLSHIFT 11 /* convert bytes to m_buf clusters */
/* 2K cluster can hold Ether frame */ /* 2K cluster can hold Ether frame */
#endif /* MCLSHIFT */ #endif /* MCLSHIFT */
#define MCLBYTES (1 << MCLSHIFT) /* size of a m_buf cluster */ #define MCLBYTES (1 << MCLSHIFT) /* size of a m_buf cluster */
#ifndef NMBCLUSTERS #ifndef NMBCLUSTERS
#if defined(_KERNEL_OPT) #ifdef GATEWAY
#include "opt_gateway.h" #define NMBCLUSTERS 2048 /* map size, max cluster allocation */
#endif #else
#define NMBCLUSTERS 1024 /* map size, max cluster allocation */
#ifdef GATEWAY #endif
#define NMBCLUSTERS 2048 /* map size, max cluster allocation */
#else
#define NMBCLUSTERS 1024 /* map size, max cluster allocation */
#endif
#endif #endif
#ifndef NFS_RSIZE #ifndef NFS_RSIZE
#define NFS_RSIZE 32768 #define NFS_RSIZE 32768
#endif #endif
#ifndef NFS_WSIZE #ifndef NFS_WSIZE
#define NFS_WSIZE 32768 #define NFS_WSIZE 32768
#endif #endif
/* /*
* Minimum and maximum sizes of the kernel malloc arena in PAGE_SIZE-sized * Minimum and maximum sizes of the kernel malloc arena in PAGE_SIZE-sized
* logical pages. * logical pages.
*/ */
#define NKMEMPAGES_MIN_DEFAULT ((8 * 1024 * 1024) >> PAGE_SHIFT) #define NKMEMPAGES_MIN_DEFAULT ((8 * 1024 * 1024) >> PAGE_SHIFT)
#define NKMEMPAGES_MAX_DEFAULT ((128 * 1024 * 1024) >> PAGE_SHIFT) #define NKMEMPAGES_MAX_DEFAULT ((128 * 1024 * 1024) >> PAGE_SHIFT)
/* /*
* Mach derived conversion macros * Mach derived conversion macros
*/ */
#define x86_round_pdr(x) ((((unsigned)(x)) + PDOFSET) & ~PDOFSET) #define x86_round_pdr(x) ((((EFI_ULONG_T)(x)) + PDOFSET) & ~PDOFSET)
#define x86_trunc_pdr(x) ((unsigned)(x) & ~PDOFSET) #define x86_trunc_pdr(x) ((EFI_ULONG_T)(x) & ~PDOFSET)
#define x86_btod(x) ((unsigned)(x) >> PDSHIFT) #define x86_btod(x) ((EFI_ULONG_T)(x) >> PDSHIFT)
#define x86_dtob(x) ((unsigned)(x) << PDSHIFT) #define x86_dtob(x) ((EFI_ULONG_T)(x) << PDSHIFT)
#define x86_round_page(x) ((((unsigned)(x)) + PGOFSET) & ~PGOFSET) #define x86_round_page(x) ((((EFI_ULONG_T)(x)) + PGOFSET) & ~PGOFSET)
#define x86_trunc_page(x) ((unsigned)(x) & ~PGOFSET) #define x86_trunc_page(x) ((EFI_ULONG_T)(x) & ~PGOFSET)
#define x86_btop(x) ((unsigned)(x) >> PGSHIFT) #define x86_btop(x) ((EFI_ULONG_T)(x) >> PGSHIFT)
#define x86_ptob(x) ((unsigned)(x) << PGSHIFT) #define x86_ptob(x) ((EFI_ULONG_T)(x) << PGSHIFT)
#endif /* _I386_PARAM_H_ */ #endif /* _I386_PARAM_H_ */

View File

@ -1,6 +1,15 @@
/* $NetBSD: param.h,v 1.2 2006/08/28 13:43:35 yamt Exp $ */ /** @file
Machine dependent constants for Intel Itanium Architecture(IPF).
Copyright (c) 2010-2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
/*-
* Copyright (c) 1990 The Regents of the University of California. * Copyright (c) 1990 The Regents of the University of California.
* All rights reserved. * All rights reserved.
* *
@ -31,47 +40,43 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* @(#)param.h 5.8 (Berkeley) 6/28/91 * @(#)param.h 5.8 (Berkeley) 6/28/91
* $NetBSD: param.h,v 1.2 2006/08/28 13:43:35 yamt Exp
*/ */
#ifndef _IA64_PARAM_H_ #ifndef _IA64_PARAM_H_
#define _IA64_PARAM_H_ #define _IA64_PARAM_H_
/* #define _MACHINE ia64
* Machine dependent constants for Intel Itanium. #define MACHINE "ia64"
*/ #define _MACHINE_ARCH ia64
#define MACHINE_ARCH "ia64"
#define _MACHINE ia64 #define MID_MACHINE MID_IA64
#define MACHINE "ia64"
#define _MACHINE_ARCH ia64
#define MACHINE_ARCH "ia64"
#define MID_MACHINE MID_IA64
#ifdef SMP #ifdef SMP
#define MAXCPU 16 #define MAXCPU 512
#else #else
#define MAXCPU 1 #define MAXCPU 1
#endif #endif
#define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */ #define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */
#define DEV_BSIZE (1<<DEV_BSHIFT) #define DEV_BSIZE (1<<DEV_BSHIFT)
#define BLKDEV_IOSIZE 2048 #define BLKDEV_IOSIZE 2048
#ifndef MAXPHYS #ifndef MAXPHYS
#define MAXPHYS (64 * 1024) /* max raw I/O transfer size */ #define MAXPHYS (64 * 1024) /* max raw I/O transfer size */
#endif #endif
#define UPAGES 4 #define UPAGES 4
#define USPACE (UPAGES * NBPG) /* total size of u-area */ #define USPACE (UPAGES * NBPG) /* total size of u-area */
#ifndef MSGBUFSIZE #ifndef MSGBUFSIZE
#define MSGBUFSIZE NBPG /* default message buffer size */ #define MSGBUFSIZE NBPG /* default message buffer size */
#endif #endif
#ifndef KSTACK_PAGES #ifndef KSTACK_PAGES
#define KSTACK_PAGES 4 /* pages of kernel stack */ #define KSTACK_PAGES 4 /* pages of kernel stack */
#endif #endif
#define KSTACK_GUARD_PAGES 0 /* pages of kstack guard; 0 disables */ #define KSTACK_GUARD_PAGES 0 /* pages of kstack guard; 0 disables */
/* /*
* Round p (pointer or byte index) up to a correctly-aligned value * Round p (pointer or byte index) up to a correctly-aligned value
@ -81,21 +86,21 @@
* ALIGNED_POINTER is a boolean macro that checks whether an address * ALIGNED_POINTER is a boolean macro that checks whether an address
* is valid to fetch data elements of type t from on this architecture. * is valid to fetch data elements of type t from on this architecture.
* This does not reflect the optimal alignment, just the possibility * This does not reflect the optimal alignment, just the possibility
* (within reasonable limits). * (within reasonable limits).
* *
*/ */
#define ALIGNBYTES 15 #define ALIGNBYTES 15
#define ALIGN(p) (((u_long)(p) + ALIGNBYTES) &~ ALIGNBYTES) #define ALIGN(p) (((UINT64)(p) + ALIGNBYTES) &~ ALIGNBYTES)
#define ALIGNED_POINTER(p,t) ((((u_long)(p)) & (sizeof(t)-1)) == 0) #define ALIGNED_POINTER(p,t) ((((UINT64)(p)) & (sizeof(t)-1)) == 0)
#define ALIGNBYTES32 (sizeof(int) - 1) #define ALIGNBYTES32 (sizeof(INT32) - 1)
#define ALIGN32(p) (((u_long)(p) + ALIGNBYTES32) &~ALIGNBYTES32) #define ALIGN32(p) (((UINT64)(p) + ALIGNBYTES32) &~ALIGNBYTES32)
#define PGSHIFT 14 /* LOG2(NBPG) */ #define PGSHIFT 14 /* LOG2(NBPG) */
#define NBPG (1 << PGSHIFT) /* bytes/page */ #define NBPG (1 << PGSHIFT) /* bytes/page */
#define PGOFSET (NBPG-1) /* byte offset into page */ #define PGOFSET (NBPG-1) /* byte offset into page */
#define NPTEPG (NBPG/(sizeof (pt_entry_t))) #define NPTEPG (NBPG/(sizeof (pt_entry_t)))
/* /*
* Constants related to network buffer management. * Constants related to network buffer management.
* MCLBYTES must be no larger than NBPG (the software page size), and, * MCLBYTES must be no larger than NBPG (the software page size), and,
@ -103,24 +108,19 @@
* clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple * clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple
* of the hardware page size. * of the hardware page size.
*/ */
#define MSIZE 256 /* size of an mbuf */ #define MSIZE 256 /* size of an mbuf */
#ifndef MCLSHIFT #ifndef MCLSHIFT
#define MCLSHIFT 11 /* convert bytes to m_buf clusters */ #define MCLSHIFT 11 /* convert bytes to m_buf clusters */
/* 2K cluster can hold Ether frame */ /* 2K cluster can hold Ether frame */
#endif /* MCLSHIFT */ #endif /* MCLSHIFT */
#define MCLBYTES (1 << MCLSHIFT) /* size of a m_buf cluster */ #define MCLBYTES (1 << MCLSHIFT) /* size of a m_buf cluster */
#ifndef NMBCLUSTERS
#if defined(_KERNEL_OPT)
#include "opt_gateway.h"
#endif
#ifdef GATEWAY #ifdef GATEWAY
#define NMBCLUSTERS 2048 /* map size, max cluster allocation */ #define NMBCLUSTERS 2048 /* map size, max cluster allocation */
#else #else
#define NMBCLUSTERS 1024 /* map size, max cluster allocation */ #define NMBCLUSTERS 1024 /* map size, max cluster allocation */
#endif #endif
#endif #endif
@ -128,25 +128,17 @@
* Minimum and maximum sizes of the kernel malloc arena in PAGE_SIZE-sized * Minimum and maximum sizes of the kernel malloc arena in PAGE_SIZE-sized
* logical pages. * logical pages.
*/ */
#define NKMEMPAGES_MIN_DEFAULT ((12 * 1024 * 1024) >> PAGE_SHIFT) #define NKMEMPAGES_MIN_DEFAULT ((12 * 1024 * 1024) >> PAGE_SHIFT)
#define NKMEMPAGES_MAX_DEFAULT ((128 * 1024 * 1024) >> PAGE_SHIFT) #define NKMEMPAGES_MAX_DEFAULT ((128 * 1024 * 1024) >> PAGE_SHIFT)
/* /*
* Mach derived conversion macros * Mach derived conversion macros
*/ */
#define ia64_round_page(x) ((((unsigned long)(x)) + NBPG - 1) & ~(NBPG - 1)) #define ia64_round_page(x) ((((EFI_ULONG_T)(x)) + NBPG - 1) & ~(NBPG - 1))
#define ia64_trunc_page(x) ((unsigned long)(x) & ~(NBPG - 1)) #define ia64_trunc_page(x) ((EFI_ULONG_T)(x) & ~(NBPG - 1))
#define ia64_btop(x) ((unsigned long)(x) >> PGSHIFT)
#define ia64_ptob(x) ((unsigned long)(x) << PGSHIFT)
#ifdef _KERNEL
#ifndef _LOCORE
#include <machine/intr.h> #define ia64_btop(x) ((EFI_ULONG_T)(x) >> PGSHIFT)
#define ia64_ptob(x) ((EFI_ULONG_T)(x) << PGSHIFT)
#endif /* _LOCORE */
#endif /* _KERNEL */
#endif /* _IA64_PARAM_H_ */ #endif /* _IA64_PARAM_H_ */

View File

@ -1,10 +1,25 @@
/* $NetBSD: param.h,v 1.3 2006/08/28 13:43:35 yamt Exp $ */ /** @file
Machine dependent constants for the Intel64 Architecture(X64).
#define _MACHINE amd64 Copyright (c) 2010-2012, Intel Corporation. All rights reserved.<BR>
#define MACHINE "amd64" This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
* $NetBSD: param.h,v 1.3 2006/08/28 13:43:35 yamt Exp
**/
#ifndef _X64_PARAM_H_
#define _X64_PARAM_H_
#define _MACHINE amd64
#define MACHINE "amd64"
#define _MACHINE_ARCH x86_64 #define _MACHINE_ARCH x86_64
#define MACHINE_ARCH "x86_64" #define MACHINE_ARCH "x86_64"
#define MID_MACHINE MID_X86_64 #define MID_MACHINE MID_X86_64
/* /*
* Round p (pointer or byte index) up to a correctly-aligned value * Round p (pointer or byte index) up to a correctly-aligned value
@ -17,46 +32,32 @@
* (within reasonable limits). * (within reasonable limits).
* *
*/ */
#define ALIGNBYTES (sizeof(INT64) - 1) #define ALIGNBYTES (sizeof(INT64) - 1)
#define ALIGN(p) (((UINT64)(p) + ALIGNBYTES) &~ALIGNBYTES) #define ALIGN(p) (((UINT64)(p) + ALIGNBYTES) &~ALIGNBYTES)
#define ALIGNED_POINTER(p,t) 1 #define ALIGNED_POINTER(p,t) 1
#define ALIGNBYTES32 (sizeof(INT32) - 1) #define ALIGNBYTES32 (sizeof(INT32) - 1)
#define ALIGN32(p) (((UINT32)(p) + ALIGNBYTES32) &~ALIGNBYTES32) #define ALIGN32(p) (((UINT64)(p) + ALIGNBYTES32) &~ALIGNBYTES32)
#define PGSHIFT 12 /* LOG2(NBPG) */ #define PGSHIFT 12 /* LOG2(NBPG) */
#define NBPG (1 << PGSHIFT) /* bytes/page */ #define NBPG (1 << PGSHIFT) /* bytes/page */
#define PGOFSET (NBPG-1) /* byte offset into page */ #define PGOFSET (NBPG-1) /* byte offset into page */
#define NPTEPG (NBPG/(sizeof (pt_entry_t))) #define NPTEPG (NBPG/(sizeof (pt_entry_t)))
/* #define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */
* XXXfvdl change this (after bootstrap) to take # of bits from #define DEV_BSIZE (1 << DEV_BSHIFT)
* config info into account.
*/
#define KERNBASE 0xffffffff80000000 /* start of kernel virtual space */
#define KERNTEXTOFF 0xffffffff80100000 /* start of kernel text */
#define BTOPKERNBASE ((u_long)KERNBASE >> PGSHIFT)
#define KERNTEXTOFF_HI 0xffffffff
#define KERNTEXTOFF_LO 0x80100000
#define KERNBASE_HI 0xffffffff
#define KERNBASE_LO 0x80000000
#define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */
#define DEV_BSIZE (1 << DEV_BSHIFT)
#define BLKDEV_IOSIZE 2048 #define BLKDEV_IOSIZE 2048
#ifndef MAXPHYS #ifndef MAXPHYS
#define MAXPHYS (64 * 1024) /* max raw I/O transfer size */ #define MAXPHYS (64 * 1024) /* max raw I/O transfer size */
#endif #endif
#define SSIZE 1 /* initial stack size/NBPG */ #define SSIZE 1 /* initial stack size/NBPG */
#define SINCR 1 /* increment of stack/NBPG */ #define SINCR 1 /* increment of stack/NBPG */
#define UPAGES 5 /* pages of u-area */ #define UPAGES 5 /* pages of u-area */
#define USPACE (UPAGES * NBPG) /* total size of u-area */ #define USPACE (UPAGES * NBPG) /* total size of u-area */
#ifndef MSGBUFSIZE #ifndef MSGBUFSIZE
#define MSGBUFSIZE 4*NBPG /* default message buffer size */ #define MSGBUFSIZE 4*NBPG /* default message buffer size */
#endif #endif
/* /*
@ -66,14 +67,14 @@
* clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple * clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple
* of the hardware page size. * of the hardware page size.
*/ */
#define MSIZE 512 /* size of an mbuf */ #define MSIZE 512 /* size of an mbuf */
#ifndef MCLSHIFT #ifndef MCLSHIFT
#define MCLSHIFT 11 /* convert bytes to m_buf clusters */ #define MCLSHIFT 11 /* convert bytes to m_buf clusters */
/* 2K cluster can hold Ether frame */ /* 2K cluster can hold Ether frame */
#endif /* MCLSHIFT */ #endif /* MCLSHIFT */
#define MCLBYTES (1 << MCLSHIFT) /* size of a m_buf cluster */ #define MCLBYTES (1 << MCLSHIFT) /* size of a m_buf cluster */
#ifndef NMBCLUSTERS #ifndef NMBCLUSTERS
#ifdef GATEWAY #ifdef GATEWAY
@ -84,39 +85,21 @@
#endif #endif
#ifndef NFS_RSIZE #ifndef NFS_RSIZE
#define NFS_RSIZE 32768 #define NFS_RSIZE 32768
#endif #endif
#ifndef NFS_WSIZE #ifndef NFS_WSIZE
#define NFS_WSIZE 32768 #define NFS_WSIZE 32768
#endif #endif
/* #define x86_round_page(x) ((((EFI_ULONG_T)(x)) + PGOFSET) & ~PGOFSET)
* Minimum and maximum sizes of the kernel malloc arena in PAGE_SIZE-sized #define x86_trunc_page(x) ((EFI_ULONG_T)(x) & ~PGOFSET)
* logical pages. #define x86_btop(x) ((EFI_ULONG_T)(x) >> PGSHIFT)
*/ #define x86_ptob(x) ((EFI_ULONG_T)(x) << PGSHIFT)
//#define NKMEMPAGES_MIN_DEFAULT ((8 * 1024 * 1024) >> PAGE_SHIFT)
//#define NKMEMPAGES_MAX_DEFAULT ((1 *1024 * 1024 * 1024) >> PAGE_SHIFT)
/* #define btop(x) x86_btop(x)
* XXXfvdl the PD* stuff is different from i386. #define ptob(x) x86_ptob(x)
*/
/*
* Mach derived conversion macros
*/
#ifdef MACH_DCM
#define x86_round_pdr(x) ((((unsigned long)(x)) + (NBPD_L2 - 1)) & ~(NBPD_L2 - 1))
#define x86_trunc_pdr(x) ((unsigned long)(x) & ~(NBPD_L2 - 1))
#define x86_btod(x) ((unsigned long)(x) >> L2_SHIFT)
#define x86_dtob(x) ((unsigned long)(x) << L2_SHIFT)
#endif // MACH_DCM
#define x86_round_page(x) ((((ULONG32)(x)) + PGOFSET) & ~PGOFSET)
#define x86_trunc_page(x) ((ULONG32)(x) & ~PGOFSET)
#define x86_btop(x) ((ULONG32)(x) >> PGSHIFT)
#define x86_ptob(x) ((ULONG32)(x) << PGSHIFT)
#define btop(x) x86_btop(x)
#define ptob(x) x86_ptob(x)
#define round_pdr(x) x86_round_pdr(x) #define round_pdr(x) x86_round_pdr(x)
#define mstohz(ms) ((ms + 0UL) * hz / 1000) #define mstohz(ms) ((ms + 0UL) * hz / 1000)
#endif /* _X64_PARAM_H_ */

View File

@ -22,7 +22,7 @@
This file and its contents are inspired by the <sys/cdefs.h> files in Berkeley This file and its contents are inspired by the <sys/cdefs.h> files in Berkeley
Unix. They have been re-implemented to be specific to the EFI environment. Unix. They have been re-implemented to be specific to the EFI environment.
Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR> Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution. the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at The full text of the license may be found at
@ -330,6 +330,10 @@
#error You must specify /Zc:wchar_t- to the compiler to turn off intrinsic wchar_t. #error You must specify /Zc:wchar_t- to the compiler to turn off intrinsic wchar_t.
#endif #endif
/* Get rid of pre-defined macros that are misleading in this environment. */
#undef _WIN32
#undef _WIN64
// Keep compiler quiet about casting from smaller to larger types // Keep compiler quiet about casting from smaller to larger types
#pragma warning ( disable : 4306 ) #pragma warning ( disable : 4306 )
#endif /* defined(_MSC_VER) */ #endif /* defined(_MSC_VER) */
@ -344,8 +348,8 @@ typedef UINT32 ULONG32;
typedef INT64 LONG64; typedef INT64 LONG64;
typedef UINT64 ULONG64; typedef UINT64 ULONG64;
typedef INT32 EFI_LONG_T; typedef INTN EFI_LONG_T;
typedef UINT32 EFI_ULONG_T; typedef UINTN EFI_ULONG_T;
/* These types reflect the compiler's size for long */ /* These types reflect the compiler's size for long */
#if defined(__GNUC__) #if defined(__GNUC__)

View File

@ -4,7 +4,7 @@
All of the global data in the gMD structure is initialized to 0, NULL, or All of the global data in the gMD structure is initialized to 0, NULL, or
SIG_DFL; as appropriate. SIG_DFL; as appropriate.
Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR> Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution. the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at The full text of the license may be found at
@ -74,7 +74,7 @@ static
char ** char **
ArgvConvert(UINTN Argc, CHAR16 **Argv) ArgvConvert(UINTN Argc, CHAR16 **Argv)
{ {
size_t AVsz; /* Size of a single nArgv string */ ssize_t AVsz; /* Size of a single nArgv string, or -1 */
UINTN count; UINTN count;
char **nArgv; char **nArgv;
char *string; char *string;
@ -90,7 +90,7 @@ DEBUG_CODE_END();
nArgvSize = Argc; nArgvSize = Argc;
/* Determine space needed for narrow Argv strings. */ /* Determine space needed for narrow Argv strings. */
for(count = 0; count < Argc; ++count) { for(count = 0; count < Argc; ++count) {
AVsz = wcstombs(NULL, Argv[count], ARG_MAX); AVsz = (ssize_t)wcstombs(NULL, Argv[count], ARG_MAX);
if(AVsz < 0) { if(AVsz < 0) {
Print(L"ABORTING: Argv[%d] contains an unconvertable character.\n", count); Print(L"ABORTING: Argv[%d] contains an unconvertable character.\n", count);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);

View File

@ -1,35 +1,48 @@
/* $NetBSD: strtod.c,v 1.4.14.1 2008/04/08 21:10:55 jdc Exp $ */ /** @file
/**************************************************************** Copyright (c) 2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.
The author of this software is David M. Gay. THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
Copyright (C) 1998-2001 by Lucent Technologies *****************************************************************
All Rights Reserved
Permission to use, copy, modify, and distribute this software and The author of this software is David M. Gay.
its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all
copies and that both that the copyright notice and this
permission notice and warranty disclaimer appear in supporting
documentation, and that the name of Lucent or any of its entities
not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior
permission.
LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, Copyright (C) 1998-2001 by Lucent Technologies
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. All Rights Reserved
IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.
****************************************************************/ Permission to use, copy, modify, and distribute this software and
its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all
copies and that both that the copyright notice and this
permission notice and warranty disclaimer appear in supporting
documentation, and that the name of Lucent or any of its entities
not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior
permission.
/* Please send bug reports to David M. Gay (dmg at acm dot org, LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* with " at " changed at "@" and " dot " changed to "."). */ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.
Please send bug reports to David M. Gay (dmg at acm dot org,
with " at " changed at "@" and " dot " changed to ".").
*****************************************************************
NetBSD: strtod.c,v 1.4.14.1 2008/04/08 21:10:55 jdc Exp
**/
#include <LibConfig.h> #include <LibConfig.h>
#include "gdtoaimp.h" #include "gdtoaimp.h"
@ -477,7 +490,7 @@ strtod(CONST char *s00, char **se)
for(j = 0; e1 > 0; j++, e1 = (unsigned int)e1 >> 1) for(j = 0; e1 > 0; j++, e1 = (unsigned int)e1 >> 1)
if (e1 & 1) if (e1 & 1)
dval(rv) *= tinytens[j]; dval(rv) *= tinytens[j];
if (scale && (j = 2*P + 1 - ((word0(rv) & Exp_mask) if (scale && (j = 2*P + 1 - (unsigned int)((word0(rv) & Exp_mask)
>> Exp_shift)) > 0) { >> Exp_shift)) > 0) {
/* scaled rv is denormal; zap j low bits */ /* scaled rv is denormal; zap j low bits */
if (j >= 32) { if (j >= 32) {

View File

@ -1,35 +1,48 @@
/* $NetBSD: strtodg.c,v 1.5.14.1 2008/04/08 21:10:55 jdc Exp $ */ /** @file
/**************************************************************** Copyright (c) 2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.
The author of this software is David M. Gay. THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
Copyright (C) 1998-2001 by Lucent Technologies *****************************************************************
All Rights Reserved
Permission to use, copy, modify, and distribute this software and The author of this software is David M. Gay.
its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all
copies and that both that the copyright notice and this
permission notice and warranty disclaimer appear in supporting
documentation, and that the name of Lucent or any of its entities
not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior
permission.
LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, Copyright (C) 1998-2001 by Lucent Technologies
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. All Rights Reserved
IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.
****************************************************************/ Permission to use, copy, modify, and distribute this software and
its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all
copies and that both that the copyright notice and this
permission notice and warranty disclaimer appear in supporting
documentation, and that the name of Lucent or any of its entities
not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior
permission.
/* Please send bug reports to David M. Gay (dmg at acm dot org, LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* with " at " changed at "@" and " dot " changed to "."). */ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.
Please send bug reports to David M. Gay (dmg at acm dot org,
with " at " changed at "@" and " dot " changed to ".").
*****************************************************************
NetBSD: strtodg.c,v 1.5.14.1 2008/04/08 21:10:55 jdc Exp
**/
#include <LibConfig.h> #include <LibConfig.h>
#include "gdtoaimp.h" #include "gdtoaimp.h"
@ -611,14 +624,14 @@ strtodg
if (e1 &= ~15) { if (e1 &= ~15) {
e1 = (unsigned int)e1 >> 4; e1 = (unsigned int)e1 >> 4;
while(e1 >= (1 << (n_bigtens-1))) { while(e1 >= (1 << (n_bigtens-1))) {
e2 += ((word0(rv) & Exp_mask) e2 += (unsigned int)((word0(rv) & Exp_mask)
>> Exp_shift1) - Bias; >> Exp_shift1) - Bias;
word0(rv) &= ~Exp_mask; word0(rv) &= ~Exp_mask;
word0(rv) |= Bias << Exp_shift1; word0(rv) |= Bias << Exp_shift1;
dval(rv) *= bigtens[n_bigtens-1]; dval(rv) *= bigtens[n_bigtens-1];
e1 -= 1 << (n_bigtens-1); e1 -= 1 << (n_bigtens-1);
} }
e2 += ((word0(rv) & Exp_mask) >> Exp_shift1) - Bias; e2 += (unsigned int)((word0(rv) & Exp_mask) >> Exp_shift1) - Bias;
word0(rv) &= ~Exp_mask; word0(rv) &= ~Exp_mask;
word0(rv) |= Bias << Exp_shift1; word0(rv) |= Bias << Exp_shift1;
for(j = 0; e1 > 0; j++, e1 = (unsigned int)e1 >> 1) for(j = 0; e1 > 0; j++, e1 = (unsigned int)e1 >> 1)
@ -633,14 +646,14 @@ strtodg
if (e1 &= ~15) { if (e1 &= ~15) {
e1 = (unsigned int)e1 >> 4; e1 = (unsigned int)e1 >> 4;
while(e1 >= (1 << (n_bigtens-1))) { while(e1 >= (1 << (n_bigtens-1))) {
e2 += ((word0(rv) & Exp_mask) e2 += (unsigned int)((word0(rv) & Exp_mask)
>> Exp_shift1) - Bias; >> Exp_shift1) - Bias;
word0(rv) &= ~Exp_mask; word0(rv) &= ~Exp_mask;
word0(rv) |= Bias << Exp_shift1; word0(rv) |= Bias << Exp_shift1;
dval(rv) *= tinytens[n_bigtens-1]; dval(rv) *= tinytens[n_bigtens-1];
e1 -= 1 << (n_bigtens-1); e1 -= 1 << (n_bigtens-1);
} }
e2 += ((word0(rv) & Exp_mask) >> Exp_shift1) - Bias; e2 += (unsigned int)((word0(rv) & Exp_mask) >> Exp_shift1) - Bias;
word0(rv) &= ~Exp_mask; word0(rv) &= ~Exp_mask;
word0(rv) |= Bias << Exp_shift1; word0(rv) |= Bias << Exp_shift1;
for(j = 0; e1 > 0; j++, e1 = (unsigned int)e1 >> 1) for(j = 0; e1 > 0; j++, e1 = (unsigned int)e1 >> 1)

View File

@ -5,7 +5,7 @@
# The including DSC file must DEFINE the EMULATE macro if # The including DSC file must DEFINE the EMULATE macro if
# the application is to be run in an emulation environment. # the application is to be run in an emulation environment.
# #
# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR> # Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
# This program and the accompanying materials # This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at # which accompanies this distribution. The full text of the license may be found at
@ -90,19 +90,19 @@
!ifndef $(EMULATE) !ifndef $(EMULATE)
# These Build Options are used when building the Standard Libraries to be run # These Build Options are used when building the Standard Libraries to be run
# on real hardware. # on real hardware.
INTEL:*_*_*_CC_FLAGS = /Qfreestanding INTEL:*_*_*_CC_FLAGS = /Qfreestanding /D UEFI_C_SOURCE
MSFT:*_*_*_CC_FLAGS = /X /Zc:wchar_t MSFT:*_*_*_CC_FLAGS = /X /Zc:wchar_t /D UEFI_C_SOURCE
GCC:*_*_*_CC_FLAGS = -nostdinc -nostdlib GCC:*_*_*_CC_FLAGS = -nostdinc -nostdlib -DUEFI_C_SOURCE
RVCT:*_*_*_CC_FLAGS = --library_interface=none -J$(WORKSPACE)/StdLib/Include -J$(WORKSPACE)/StdLib/Include/Arm RVCT:*_*_*_CC_FLAGS = --library_interface=none -DUEFI_C_SOURCE -J$(WORKSPACE)/StdLib/Include -J$(WORKSPACE)/StdLib/Include/Arm
ARMGCC:*_*_*_CC_FLAGS = -nostdinc -nostdlib -Wno-unknown-pragmas -Wno-unused -Wno-format-zero-length ARMGCC:*_*_*_CC_FLAGS = -nostdinc -nostdlib -DUEFI_C_SOURCE -Wno-unknown-pragmas -Wno-unused -Wno-format-zero-length
!else !else
# The Build Options, below, are only used when building the Standard Libraries # The Build Options, below, are only used when building the Standard Libraries
# to be run under an emulation environment. # to be run under an emulation environment.
# They disable optimization which facillitates debugging under the Emulation environment. # They disable optimization which facillitates debugging under the Emulation environment.
INTEL:*_*_IA32_CC_FLAGS = /Od INTEL:*_*_IA32_CC_FLAGS = /Od /D UEFI_C_SOURCE
MSFT:*_*_IA32_CC_FLAGS = /Od MSFT:*_*_IA32_CC_FLAGS = /Od /D UEFI_C_SOURCE
GCC:*_*_IA32_CC_FLAGS = -O0 GCC:*_*_IA32_CC_FLAGS = -O0 -DUEFI_C_SOURCE
RVCT:*_*_*_CC_FLAGS = --library_interface=none -J$(WORKSPACE)/StdLib/Include -J$(WORKSPACE)/StdLib/Include/Arm RVCT:*_*_*_CC_FLAGS = --library_interface=none -DUEFI_C_SOURCE -J$(WORKSPACE)/StdLib/Include -J$(WORKSPACE)/StdLib/Include/Arm
ARMGCC:*_*_*_CC_FLAGS = -O0 -Wno-unknown-pragmas -Wno-unused -Wno-format-zero-length ARMGCC:*_*_*_CC_FLAGS = -O0 -DUEFI_C_SOURCE -Wno-unknown-pragmas -Wno-unused -Wno-format-zero-length
!endif !endif

View File

@ -1,6 +1,15 @@
/* $NetBSD: extern.h,v 1.14 2006/11/22 17:23:25 christos Exp $ */ /* @file
Misc. external declarations.
Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
/*
* Copyright (c) 1997 Christos Zoulas. All rights reserved. * Copyright (c) 1997 Christos Zoulas. All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -27,41 +36,52 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
NetBSD: extern.h,v 1.14 2006/11/22 17:23:25 christos Exp
*/ */
#include <Uefi.h> #include <Uefi.h>
#include <time.h> #include <time.h>
__BEGIN_DECLS __BEGIN_DECLS
extern char *__minbrk; extern char * __minbrk;
int __getcwd(char *, size_t); int __getcwd(char *, size_t);
int __getlogin(char *, size_t); int __getlogin(char *, size_t);
int __setlogin(const char *); int __setlogin(const char *);
void _resumecontext(void); void _resumecontext(void);
const char *__strerror(int , char *, size_t); const char * __strerror(int , char *, size_t);
const char *__strsignal(int , char *, size_t); const char * __strsignal(int , char *, size_t);
char *__dtoa(double, int, int, int *, int *, char **); char * __dtoa(double, int, int, int *, int *, char **);
void __freedtoa(char *); void __freedtoa(char *);
int __sysctl(const int *, unsigned int, void *, size_t *, const void *, size_t); int __sysctl(const int *, unsigned int, void *, size_t *, const void *, size_t);
//struct sigaction; #ifdef HAVE_SIGACTION
//int __sigaction_sigtramp(int, const struct sigaction *, struct sigaction;
// struct sigaction *, const void *, int); int __sigaction_sigtramp (int, const struct sigaction *,
struct sigaction *, const void *, int);
#endif /* HAVE_SIGACTION */
#ifdef WIDE_DOUBLE #ifdef WIDE_DOUBLE
char *__hdtoa(double, const char *, int, int *, int *, char **); char * __hdtoa(double, const char *, int, int *, int *, char **);
char *__hldtoa(long double, const char *, int, int *, int *, char **); char * __hldtoa(long double, const char *, int, int *, int *, char **);
char *__ldtoa(long double *, int, int, int *, int *, char **); char * __ldtoa(long double *, int, int, int *, int *, char **);
#endif #endif
//struct syslog_data; #ifdef HAVE_SYSLOG
//void syslog_ss(int, struct syslog_data *, const char *, ...) struct syslog_data;
// __attribute__((__format__(__printf__,3,4))); void syslog_ss(int, struct syslog_data *, const char *, ...)
//void vsyslog_ss(int, struct syslog_data *, const char *, _BSD_VA_LIST_); __attribute__((__format__(__printf__,3,4)));
void vsyslog_ss(int, struct syslog_data *, const char *, _BSD_VA_LIST_);
#endif /* HAVE_SYSLOG */
//int snprintf_ss(char * __restrict, size_t, const char * __restrict, ...) #ifdef HAVE_SNPRINTF_SS
// __attribute__((__format__(__printf__, 3, 4))); int snprintf_ss(char * __restrict, size_t, const char * __restrict, ...)
//int vsnprintf_ss(char * __restrict, size_t, const char * __restrict, __attribute__((__format__(__printf__, 3, 4)));
// _BSD_VA_LIST_) __attribute__((__format__(__printf__, 3, 0))); #endif /* HAVE_SNPRINTF_SS */
#ifdef HAVE_VSNPRINTF_SS
int vsnprintf_ss(char * __restrict, size_t, const char * __restrict,
_BSD_VA_LIST_) __attribute__((__format__(__printf__, 3, 0)));
#endif /* HAVE_VSNPRINTF_SS */
void Efi2Tm( EFI_TIME *ET, struct tm *BT); void Efi2Tm( EFI_TIME *ET, struct tm *BT);
time_t Efi2Time( EFI_TIME *EfiBDtime); time_t Efi2Time( EFI_TIME *EfiBDtime);