Skip to content

Commit

Permalink
Merge tag '9.6'
Browse files Browse the repository at this point in the history
  • Loading branch information
cod committed Apr 9, 2015
2 parents f25c59e + 1ad0980 commit 99fe0d0
Show file tree
Hide file tree
Showing 1,667 changed files with 533,660 additions and 64,218 deletions.
6 changes: 4 additions & 2 deletions AppPkg/AppPkg.dsc
Expand Up @@ -113,9 +113,11 @@
AppPkg/Applications/Enquire/Enquire.inf #

#### After extracting the Python distribution, un-comment the following line to build Python.
# AppPkg/Applications/Python/PythonCore.inf

# AppPkg/Applications/Python/PythonCore.inf

## chipsec
AppPkg/Applications/chipsec/chipsec.inf

##############################################################################
#
# Specify whether we are running in an emulation environment, or not.
Expand Down
118 changes: 118 additions & 0 deletions AppPkg/Applications/Python/Efi/CommonLib.c
@@ -0,0 +1,118 @@
#include "Python.h"
#include "structseq.h"

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <sys/syslimits.h>

#include "Include/BaseTypes.h"
#include "Include/UefiTypes.h"
#include "Include/EfiStruct.h"
#include "Include/CommonLib.h"


/*++
Routine Description::
This function calculates the value needed for a valid UINT16 checksum
Arguments:
Buffer Pointer to buffer containing byte data of component.
Size Size of the buffer
Returns:
The 16 bit checksum value needed.
--*/
UINT16 CalculateChecksum16( UINT16 *Buffer, UINTN Size)
{
return (UINT16) (0x10000 - CalculateSum16 (Buffer, Size));
}

UINT8 CalculateChecksum8(UINT8 *Buffer, UINTN Size)
{
return (UINT8) (0x100 - CalculateSum8(Buffer, Size));
}


/*++
Routine Description:
This function calculates the UINT16 sum for the requested region.
Arguments:
Buffer Pointer to buffer containing byte data of component.
Size Size of the buffer
Returns:
The 16 bit checksum
--*/
UINT16 CalculateSum16 (UINT16 *Buffer, UINTN Size)
{
UINTN Index;
UINT16 Sum;

Sum = 0;

//
// Perform the word sum for buffer
//
for (Index = 0; Index < Size; Index++) {
Sum = (UINT16) (Sum + Buffer[Index]);
}

return (UINT16) Sum;
}


UINT8 CalculateSum8(UINT8 *Buffer, UINTN Size)
{
UINTN Index;
UINT8 Sum;

Sum = 0;

//
// Perform the byte sum for buffer
//
for (Index = 0; Index < Size; Index++) {
Sum = (UINT8) (Sum + Buffer[Index]);
}

return Sum;
}

DWORD Expand24bit(UINT8 *ptr)
{
return ((ptr[0]) | (ptr[1] << 8) | (ptr[2] << 16));
}

void Pack24bit(UINT32 value, UINT8 *ffsSize)
{
if (value >= 0xffffff)
{
ffsSize[0] = 0xff;
ffsSize[1] = 0xff;
ffsSize[2] = 0xff;
}
else
{
ffsSize[2] = (UINT8) ((value) >> 16);
ffsSize[1] = (UINT8) ((value) >> 8);
ffsSize[0] = (UINT8) ((value));
}
}


UINT32 efi_ffs_file_size(PEFI_FFS_FILE_HEADER pFile)
{
return Expand24bit(pFile->Size);
}
31 changes: 31 additions & 0 deletions AppPkg/Applications/Python/Efi/EfiCompressor.c
@@ -0,0 +1,31 @@
/** @file
Copyright (c) 2009 - 2010, 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 which accompanies this
distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
Modified for uefi_firmware_parser:
This includes minor API changes for Tiano and EFI decompressor, as well as LZMA.
**/

#include <Python.h>

#include "Include/CompressionTypes.h"

#include "Tiano/Decompress.h"
#include "Tiano/Compress.h"
#include "LZMA/LzmaDecompress.h"
#include "LZMA/LzmaCompress.h"

//#include "EfiFile.h"

#define EFI_COMPRESSION 1 //defined as PI_STD, section type= 0x01
#define TIANO_COMPRESSION 2 //not defined, section type= 0x01
#define LZMA_COMPRESSION 3 //not defined, section type= 0x02

163 changes: 163 additions & 0 deletions AppPkg/Applications/Python/Efi/Include/BaseTypes.h
@@ -0,0 +1,163 @@
/* Processor or Compiler specific defines for all supported processors.
This file is stand alone self consistent set of definitions.
Copyright (c) 2006, 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
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
File Name: BaseTypes.h
Modified for uefi_firmware_parser:
This BaseTypes includes structures from various edk2 header files.
*/

#ifndef __BASE_TYPES_H__
#define __BASE_TYPES_H__

//
// Include processor specific binding
//
#include "ProcessorBind.h"
#include <stdarg.h>

//
// Modifiers for Data Types used to self document code.
// This concept is borrowed for UEFI specification.
//
#ifndef IN
//
// Some other environments use this construct, so #ifndef to prevent
// multiple definition.
//
#define IN
#define OUT
#define OPTIONAL
#endif

typedef INTN RETURN_STATUS;
typedef RETURN_STATUS EFI_STATUS;

#ifndef ENCODE_ERROR

#define ENCODE_ERROR(a) (-1 * (a))

#define ENCODE_WARNING(a) (a)
#define RETURN_ERROR(a) ((a) < 0)

#define RETURN_SUCCESS 0
#define RETURN_LOAD_ERROR ENCODE_ERROR (1)
#define RETURN_INVALID_PARAMETER ENCODE_ERROR (2)
#define RETURN_UNSUPPORTED ENCODE_ERROR (3)
#define RETURN_BAD_BUFFER_SIZE ENCODE_ERROR (4)
#define RETURN_BUFFER_TOO_SMALL ENCODE_ERROR (5)
#define RETURN_NOT_READY ENCODE_ERROR (6)
#define RETURN_DEVICE_ERROR ENCODE_ERROR (7)
#define RETURN_WRITE_PROTECTED ENCODE_ERROR (8)
#define RETURN_OUT_OF_RESOURCES ENCODE_ERROR (9)
#define RETURN_VOLUME_CORRUPTED ENCODE_ERROR (10)
#define RETURN_VOLUME_FULL ENCODE_ERROR (11)
#define RETURN_NO_MEDIA ENCODE_ERROR (12)
#define RETURN_MEDIA_CHANGED ENCODE_ERROR (13)
#define RETURN_NOT_FOUND ENCODE_ERROR (14)
#define RETURN_ACCESS_DENIED ENCODE_ERROR (15)
#define RETURN_NO_RESPONSE ENCODE_ERROR (16)
#define RETURN_NO_MAPPING ENCODE_ERROR (17)
#define RETURN_TIMEOUT ENCODE_ERROR (18)
#define RETURN_NOT_STARTED ENCODE_ERROR (19)
#define RETURN_ALREADY_STARTED ENCODE_ERROR (20)
#define RETURN_ABORTED ENCODE_ERROR (21)
#define RETURN_ICMP_ERROR ENCODE_ERROR (22)
#define RETURN_TFTP_ERROR ENCODE_ERROR (23)
#define RETURN_PROTOCOL_ERROR ENCODE_ERROR (24)
#define RETURN_INCOMPATIBLE_VERSION ENCODE_ERROR (25)
#define RETURN_SECURITY_VIOLATION ENCODE_ERROR (26)
#define RETURN_CRC_ERROR ENCODE_ERROR (27)
#define RETURN_END_OF_MEDIA ENCODE_ERROR (28)
#define RETURN_END_OF_FILE ENCODE_ERROR (31)

#define RETURN_WARN_UNKNOWN_GLYPH ENCODE_WARNING (1)
#define RETURN_WARN_DELETE_FAILURE ENCODE_WARNING (2)
#define RETURN_WARN_WRITE_FAILURE ENCODE_WARNING (3)
#define RETURN_WARN_BUFFER_TOO_SMALL ENCODE_WARNING (4)

//
// Enumeration of EFI_STATUS.
//
#define EFI_SUCCESS RETURN_SUCCESS
#define EFI_LOAD_ERROR RETURN_LOAD_ERROR
#define EFI_INVALID_PARAMETER RETURN_INVALID_PARAMETER
#define EFI_UNSUPPORTED RETURN_UNSUPPORTED
#define EFI_BAD_BUFFER_SIZE RETURN_BAD_BUFFER_SIZE
#define EFI_BUFFER_TOO_SMALL RETURN_BUFFER_TOO_SMALL
#define EFI_NOT_READY RETURN_NOT_READY
#define EFI_DEVICE_ERROR RETURN_DEVICE_ERROR
#define EFI_WRITE_PROTECTED RETURN_WRITE_PROTECTED
#define EFI_OUT_OF_RESOURCES RETURN_OUT_OF_RESOURCES
#define EFI_VOLUME_CORRUPTED RETURN_VOLUME_CORRUPTED
#define EFI_VOLUME_FULL RETURN_VOLUME_FULL
#define EFI_NO_MEDIA RETURN_NO_MEDIA
#define EFI_MEDIA_CHANGED RETURN_MEDIA_CHANGED
#define EFI_NOT_FOUND RETURN_NOT_FOUND
#define EFI_ACCESS_DENIED RETURN_ACCESS_DENIED
#define EFI_NO_RESPONSE RETURN_NO_RESPONSE
#define EFI_NO_MAPPING RETURN_NO_MAPPING
#define EFI_TIMEOUT RETURN_TIMEOUT
#define EFI_NOT_STARTED RETURN_NOT_STARTED
#define EFI_ALREADY_STARTED RETURN_ALREADY_STARTED
#define EFI_ABORTED RETURN_ABORTED
#define EFI_ICMP_ERROR RETURN_ICMP_ERROR
#define EFI_TFTP_ERROR RETURN_TFTP_ERROR
#define EFI_PROTOCOL_ERROR RETURN_PROTOCOL_ERROR
#define EFI_INCOMPATIBLE_VERSION RETURN_INCOMPATIBLE_VERSION
#define EFI_SECURITY_VIOLATION RETURN_SECURITY_VIOLATION
#define EFI_CRC_ERROR RETURN_CRC_ERROR
#define EFI_END_OF_MEDIA RETURN_END_OF_MEDIA
#define EFI_END_OF_FILE RETURN_END_OF_FILE

#define EFI_WARN_UNKNOWN_GLYPH RETURN_WARN_UNKNOWN_GLYPH
#define EFI_WARN_DELETE_FAILURE RETURN_WARN_DELETE_FAILURE
#define EFI_WARN_WRITE_FAILURE RETURN_WARN_WRITE_FAILURE
#define EFI_WARN_BUFFER_TOO_SMALL RETURN_WARN_BUFFER_TOO_SMALL

#define CONST const
#define STATIC static
#define VOID void

#ifndef TRUE
#define TRUE ((BOOLEAN)(1==1))
#endif

#ifndef FALSE
#define FALSE ((BOOLEAN)(0==1))
#endif

#ifndef NULL
#define NULL ((VOID *) 0)
#endif

#define ERR_SUCCESS 0
#define ERR_INVALID_PARAMETER 1
#define ERR_BUFFER_TOO_SMALL 2
#define ERR_OUT_OF_RESOURCES 3
#define ERR_OUT_OF_MEMORY 4
#define ERR_NOT_PATCHED 5
#define ERR_FILE_OPEN 6
#define ERR_FILE_READ 7
#define ERR_FILE_WRITE 8

/* Used in Compress */
#define EFI_ERROR(A) RETURN_ERROR(A)

#include <assert.h>
#endif

#define ASSERT(x) assert(x)

#endif
8 changes: 8 additions & 0 deletions AppPkg/Applications/Python/Efi/Include/CommonLib.h
@@ -0,0 +1,8 @@
UINT8 CalculateChecksum8(UINT8 *Buffer, UINTN Size);
UINT8 CalculateSum8(UINT8 *Buffer, UINTN Size);

UINT16 CalculateChecksum16( UINT16 *Buffer, UINTN Size);
UINT16 CalculateSum16 (UINT16 *Buffer, UINTN Size);
DWORD Expand24bit(UINT8 *ptr);
UINT32 efi_ffs_file_size(PEFI_FFS_FILE_HEADER pFile);
VOID Pack24bit(UINT32 value, UINT8 *ffsSize);
59 changes: 59 additions & 0 deletions AppPkg/Applications/Python/Efi/Include/CompressionTypes.h
@@ -0,0 +1,59 @@

#ifndef __COMPRESSION_TYPES_H__
#define __COMPRESSION_TYPES_H__

//#include "BaseTypes.h"

/*++
Routine Description:
The compression routine.
Arguments:
SrcBuffer - The buffer storing the source data
SrcSize - The size of source data
DstBuffer - The buffer to store the compressed data
DstSize - On input, the size of DstBuffer; On output,
the size of the actual compressed data.
Returns:
EFI_BUFFER_TOO_SMALL - The DstBuffer is too small. In this case,
DstSize contains the size needed.
EFI_SUCCESS - Compression is successful.
EFI_OUT_OF_RESOURCES - No resource to complete function.
EFI_INVALID_PARAMETER - Parameter supplied is wrong.
--*/
typedef
EFI_STATUS
(*COMPRESS_FUNCTION) (
IN UINT8 *SrcBuffer,
IN UINT32 SrcSize,
IN UINT8 *DstBuffer,
IN OUT UINT32 *DstSize
);

typedef
EFI_STATUS
(*GETINFO_FUNCTION) (
IN VOID *Source,
IN UINT32 SrcSize,
OUT UINT32 *DstSize,
OUT UINT32 *ScratchSize
);

typedef
EFI_STATUS
(*DECOMPRESS_FUNCTION) (
IN VOID *Source,
IN UINT32 SrcSize,
IN OUT VOID *Destination,
IN UINT32 DstSize,
IN OUT VOID *Scratch,
IN UINT32 ScratchSize
);

#endif

0 comments on commit 99fe0d0

Please sign in to comment.