summaryrefslogtreecommitdiff
path: root/Board/EM/Pfat/PfatPubKeysAndBuildPSL
diff options
context:
space:
mode:
authorraywu <raywu0301@gmail.com>2018-06-15 00:00:50 +0800
committerraywu <raywu0301@gmail.com>2018-06-15 00:00:50 +0800
commitb7c51c9cf4864df6aabb99a1ae843becd577237c (patch)
treeeebe9b0d0ca03062955223097e57da84dd618b9a /Board/EM/Pfat/PfatPubKeysAndBuildPSL
downloadzprj-b7c51c9cf4864df6aabb99a1ae843becd577237c.tar.xz
init. 1AQQW051HEADmaster
Diffstat (limited to 'Board/EM/Pfat/PfatPubKeysAndBuildPSL')
-rw-r--r--Board/EM/Pfat/PfatPubKeysAndBuildPSL/.VkeyExpbin0 -> 4 bytes
-rw-r--r--Board/EM/Pfat/PfatPubKeysAndBuildPSL/BuildAmiPfatHeader.exebin0 -> 65024 bytes
-rw-r--r--Board/EM/Pfat/PfatPubKeysAndBuildPSL/BuildPSL.bat315
-rw-r--r--Board/EM/Pfat/PfatPubKeysAndBuildPSL/CutRom.exebin0 -> 59392 bytes
-rw-r--r--Board/EM/Pfat/PfatPubKeysAndBuildPSL/PPB.exebin0 -> 171928 bytes
-rw-r--r--Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatCertHeader.binbin0 -> 8 bytes
-rw-r--r--Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatCryptoCon.exebin0 -> 126976 bytes
-rw-r--r--Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.cif19
-rw-r--r--Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.mak105
-rw-r--r--Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.sdl265
-rw-r--r--Board/EM/Pfat/PfatPubKeysAndBuildPSL/dummy.bin1
-rw-r--r--Board/EM/Pfat/PfatPubKeysAndBuildPSL/keygen.exebin0 -> 122880 bytes
-rw-r--r--Board/EM/Pfat/PfatPubKeysAndBuildPSL/psl2bin.exebin0 -> 214424 bytes
13 files changed, 705 insertions, 0 deletions
diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/.VkeyExp b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/.VkeyExp
new file mode 100644
index 0000000..a356872
--- /dev/null
+++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/.VkeyExp
Binary files differ
diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/BuildAmiPfatHeader.exe b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/BuildAmiPfatHeader.exe
new file mode 100644
index 0000000..0bb57ac
--- /dev/null
+++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/BuildAmiPfatHeader.exe
Binary files differ
diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/BuildPSL.bat b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/BuildPSL.bat
new file mode 100644
index 0000000..8337d0c
--- /dev/null
+++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/BuildPSL.bat
@@ -0,0 +1,315 @@
+echo off
+Set AMI_PFAT_FLASH_CONFIGURATIONS=Flash.ini
+echo AMI_PFAT_Flash_Configurations>%AMI_PFAT_FLASH_CONFIGURATIONS%
+Set FITC_OUTIMAGE_MAP=%1
+Set BuildBIOSMap=%2
+Set WORKING_PATH=%3
+Set BIOS_SVN=%4
+Set /a FlashSectionSize=%5
+if not exist %FITC_OUTIMAGE_MAP% (
+ echo Error:OutImage.map isn't found, please check the eModule of RomImgae
+ goto END
+)
+if not exist %BuildBIOSMap% (
+ echo Error:BuildBIOS.map isn't found, please check the PfatPubKeysAndBuildPSL.sdl
+ goto END
+)
+if not exist ForPfatName.txt (
+ echo Error:ForPfatName.txt isn't found, please check the eModule of RomImgae
+ goto END
+)
+FOR /F "usebackq tokens=1" %%G IN ("ForPfatName.txt") DO (
+ Set INPUT_BIOS_IMAGE=%%G
+)
+del ForPfatName.txt
+FOR /F "skip=2 usebackq tokens=1,2,3,4-6" %%G IN ("%FITC_OUTIMAGE_MAP%") DO (
+ if "%%J %%K %%L" EQU "Flash Image " (
+ Set /a TOTAL_ROM_SIZE=0x%%I
+ )else if "%%J %%K %%L" EQU "Descriptor Region " (
+ Set /a DescriptorRegionStartingAddress=0x%%G
+ Set /a DescriptorRegionLength=0x%%I
+ )else if "%%J %%K %%L" EQU "GbE Region " (
+ Set /a GbERegionStartingAddress=0x%%G
+ Set /a GbERegionLength=0x%%I
+ )else if "%%J %%K %%L" EQU "ME Region " (
+ Set /a MERegionStartingAddress=0x%%G
+ Set /a MERegionLength=0x%%I
+ )else if "%%J %%K %%L" EQU "BIOS Region " (
+ Set /a BIOSRegionStartingAddress=0x%%G
+ Set /a BIOSRegionLength=0x%%I
+ )
+)
+goto Define_Flash_Type
+
+:Define_Flash_Type
+Set MeType=0
+Set BiosType=1
+Set EcType=2
+Set OthersType=3
+goto Prepare_Definitions
+
+:Prepare_Definitions
+Set DESCRIPTOR_REGION_ROM=DescriptorRegion.bin
+Set GBE_REGION_ROM=GbERegion.bin
+Set ME_REGION_ROM=MERegion.bin
+Set PUBLIC_KEY_FILENAME=%WORKING_PATH%\PfatPublic.key
+Set PRIVATE_KEY_FILENAME=%WORKING_PATH%\PfatPrivate.key
+Set PFAT_VKEY_EXP=%WORKING_PATH%\.VkeyExp
+Set PUBLIC_KEY_FILENAME_HASH=%WORKING_PATH%\PubKeyhash.bin
+Set PFATCRYPTCON=%WORKING_PATH%\PfatCryptoCon.exe
+Set KEYGEN=%WORKING_PATH%\Keygen.exe
+Set CUTROM=%WORKING_PATH%\CutRom.exe
+Set PSL2BIN=%WORKING_PATH%\psl2bin.exe
+Set PPB=%WORKING_PATH%\PPB.exe
+Set PSL_FILE=AmiPfatBiosPSL
+Set PFAT_SCRIPT_HDR=%WORKING_PATH%\PfatCertHeader.bin
+Set PFAT_UPDATEPKG_FILENAME=UpdatePkg.pfat
+Set PFAT_SIGNATURE_FILENAME=.out_PfatCer
+Set PFAT_INTREGRATION_ROM=AMIPFAT.bin
+Set AMI_PFAT_HEADER=%WORKING_PATH%\AMIPFATHeader.bin
+%WORKING_PATH%\BuildAmiPfatHeader.exe /Empty %AMI_PFAT_HEADER%
+copy %AMI_PFAT_HEADER% %PFAT_INTREGRATION_ROM%
+goto BUILD_DESCRIPTOR_REGION_ROM
+
+:BUILD_DESCRIPTOR_REGION_ROM
+ Set ROM_PRIORITY=%DESCRIPTOR_REGION_ROM%
+ Set /a FV_StartingAddress=%DescriptorRegionStartingAddress%
+ Set /a FV_Length=%DescriptorRegionLength%
+ goto SETUP_PARAMETERS
+
+:BUILD_GBE_REGION_ROM
+ Set ROM_PRIORITY=%GBE_REGION_ROM%
+ Set /a FV_StartingAddress=%GbERegionStartingAddress%
+ Set /a FV_Length=%GbERegionLength%
+ goto SETUP_PARAMETERS
+
+:BUILD_ME_REGION_ROM
+ Set ROM_PRIORITY=%ME_REGION_ROM%
+ Set /a FV_StartingAddress=%MERegionStartingAddress%
+ Set /a FV_Length=%MERegionLength%
+ goto SETUP_PARAMETERS
+
+:BUILD_BIOS_REGION_ROM_FIRST_FV
+ Set /a BIOS_FV_Number=0
+ FOR /F "usebackq tokens=1-4" %%G IN ("%BuildBIOSMap%") DO (
+ Set ROM_PRIORITY=%%G
+ Set FlashCMD=%%H
+ Set /a FV_StartingAddress=%BIOSRegionStartingAddress%+%%I
+ Set /a FV_Length=%%J
+ goto SETUP_PARAMETERS
+ )
+ goto BuildAmiPfatHeader
+
+:BUILD_BIOS_REGION_ROM_REMAINDER
+ Set /a BIOS_FV_Number+=1
+ FOR /F "skip=%BIOS_FV_Number% usebackq tokens=1-4" %%G IN ("%BuildBIOSMap%") DO (
+ Set ROM_PRIORITY=%%G
+ Set FlashCMD=%%H
+ Set /a FV_StartingAddress=%BIOSRegionStartingAddress%+%%I
+ Set /a FV_Length=%%J
+ goto SETUP_PARAMETERS
+ )
+ goto BuildAmiPfatHeader
+
+:SETUP_PARAMETERS
+ %CUTROM% %INPUT_BIOS_IMAGE% %ROM_PRIORITY% %FV_StartingAddress% %FV_Length%
+ Set /a FlashRemainderSize=%FV_Length%%%FlashSectionSize%
+ Set /a SUBTRACT_BLOCK_SIZE_FROM_DATA_SIZE=%FlashSectionSize%-0x1000
+ Set /a START_COUNT=0
+ Set /a NoRemainderCount=%FV_Length%/%FlashSectionSize%
+ if %NoRemainderCount% GTR 0 (
+ Set /a NoRemainderCount-=1
+ Set /a SKIP_CUT_ROM=1
+ ) else (
+ Set /a SKIP_CUT_ROM=0
+ )
+ if %FlashRemainderSize% EQU 0 (
+ Set /a END_COUNT=%FV_Length%/%FlashSectionSize%-1
+ ) else (
+ Set /a END_COUNT=%FV_Length%/%FlashSectionSize%
+ )
+ Set /a END_OF_SIZE=%FV_StartingAddress%+%FV_Length%
+ goto AutoBuildPSL
+
+:AutoBuildPSL
+ Set /a START_FLASH_SECTION=%START_COUNT%*%FlashSectionSize%
+ Set /a START_FLASH_SECTION_IN_MB=%START_FLASH_SECTION%/%FlashSectionSize%
+ Set FLASH_ROM=AMI_%START_FLASH_SECTION_IN_MB%M.rom
+ Set PSL_OUT_FILENAME=AmiPfatBiosPSLOutput_%START_FLASH_SECTION_IN_MB%M.bin
+ Set FLASH_ROM_OUTPUT_FILENAME=APFAT%START_FLASH_SECTION_IN_MB%M.bin
+ Set /a SUBTRACT_BLOCK_SIZE_FROM_TOTAL_ROM_SIZE=%FV_StartingAddress%
+ Set /a CURRENT_SIZE=%START_COUNT%+1
+ Set /a CURRENT_SIZE*=%FlashSectionSize%
+ Set /a CURRENT_SIZE-=0x1000
+ if %SKIP_CUT_ROM% EQU 1 (
+ if %NoRemainderCount% GEQ %START_COUNT% (
+ %CUTROM% %ROM_PRIORITY% %FLASH_ROM% %START_FLASH_SECTION% %FlashSectionSize%
+ Set /a SUBTRACT_BLOCK_SIZE_FROM_TOTAL_ROM_SIZE+=%CURRENT_SIZE%
+ ) else (
+ %CUTROM% %ROM_PRIORITY% %FLASH_ROM% %START_FLASH_SECTION% %FlashRemainderSize%
+ Set /a SUBTRACT_BLOCK_SIZE_FROM_TOTAL_ROM_SIZE=%END_OF_SIZE%-0x1000
+ Set /a SUBTRACT_BLOCK_SIZE_FROM_DATA_SIZE=%FlashRemainderSize%-0x1000
+ )
+ ) else (
+ Set FLASH_ROM=%ROM_PRIORITY%
+ Set /a SUBTRACT_BLOCK_SIZE_FROM_TOTAL_ROM_SIZE=%END_OF_SIZE%-0x1000
+ Set /a SUBTRACT_BLOCK_SIZE_FROM_DATA_SIZE=%FlashRemainderSize%-0x1000
+ )
+ echo begin > %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo // Set up initial values for update process >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo set F0 %SUBTRACT_BLOCK_SIZE_FROM_TOTAL_ROM_SIZE%; Total ROM size >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo set B0 %SUBTRACT_BLOCK_SIZE_FROM_DATA_SIZE%; Data size >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo set I0 0; the offset count >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo set I1 0x1000; the FLASH BLOCK SIZE >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo set I2 0; Erase error count >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo set I3 0; Write error count >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo set I4 3; Max errors >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo set I5 0; Error Code Buffer >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo set I6 0; Read error count >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo jmp _read; >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+
+ echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo _read_retry_label: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo add I6 1; increment the read retries count >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo compare I6 I4; compare read retries count to max retries >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo jge _read_error_label >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo jmp _read; if error START_COUNT is smaller than Max errors jump to read>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+
+ echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo _erase_retry_label: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo add I2 1; increment the erase retries count >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo compare I2 I4; compare erase retries count to max retries >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo jge _erase_error_label >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo jmp _erase; if error START_COUNT is smaller than Max errors jump to erase >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+
+ echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo _write_retry_label: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo add I3 1; increment the write retries count >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo compare I3 I4; compare write retries count to max retries >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo jge _write_error_label >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo jmp _write; if error START_COUNT is smaller than Max errors jump to weite>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+
+ echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo _loop: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+
+ echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo _read: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo read B1 F0 I1; read block 4KB >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo rdsts I5; read the HW status into I5 >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo compare I5 0; >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo jne _read_retry_label; if HW status != 0 jump to retry >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo compare B0 B1 I1; compare B0 vs B1 >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo je _skip_erase_and_write; if B0 == B1 skip erase and write >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+
+ echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo _erase: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo eraseblk F0; erase block 4KB >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo rdsts I5; read the HW status into I5 >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo compare I5 0; >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo jne _erase_retry_label; if HW status != 0 jump to retry >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+
+ echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo _write: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo write F0 B0 I1; write block >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo rdsts I5; read the HW status into I5 >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo compare I5 0; >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo jne _write_retry_label; if HW status != 0 jump to retry >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+
+ echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo _skip_erase_and_write: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo add I0 I1; increment offset >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+
+ echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo // check if we reached the end of the buffer. We can't increment F0.offset and B0.offset to be more than BIOS size. >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ if %SKIP_CUT_ROM% EQU 1 (
+ if %NoRemainderCount% GEQ %START_COUNT% (
+ echo compare I0 %FlashSectionSize%; compare count with BIOS image size >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo jge _end; if the count is greater or equal to %FlashSectionSize% then complete >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ ) else (
+ echo compare I0 %FlashRemainderSize%; compare count with BIOS image size >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo jge _end; if the count is greater or equal to %FlashRemainderSize% then complete >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ )
+ ) else (
+ echo compare I0 %FlashRemainderSize%; compare count with BIOS image size >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo jge _end; if the count is greater or equal to %FlashRemainderSize% then complete >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ )
+ echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo //Sub 4KB to offsets >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo sub F0 I1; Decrement flash offset >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo sub B0 I1; Decrement buffer offset >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo jmp _loop; work on the next block >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+
+ echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo _read_error_label: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo set If 1; set error in If >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo jmp _end; >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+
+ echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo _erase_error_label: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo set If 2; set error in If >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo jmp _end; >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+
+ echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo _write_error_label: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo set If 3; set error in If >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+
+ echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo _end: >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo set If 0; set error = 0 if success >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+
+ echo.>> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+ echo end >> %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl
+
+ %PSL2BIN% %PSL_FILE%_%START_FLASH_SECTION_IN_MB%M.psl %PSL_OUT_FILENAME%
+ %PPB% -script %PSL_OUT_FILENAME% -data %FLASH_ROM% -package %PFAT_UPDATEPKG_FILENAME% -use_sfam true -bios_svn %BIOS_SVN%
+ %PFATCRYPTCON% -z -k %PRIVATE_KEY_FILENAME% -f %PFAT_UPDATEPKG_FILENAME% -s
+ copy /b %PFAT_UPDATEPKG_FILENAME% + %PFAT_SCRIPT_HDR% + %PFAT_SIGNATURE_FILENAME% %FLASH_ROM_OUTPUT_FILENAME%
+ if exist .out_key (
+ del .out_key
+ )
+ del .out_PfatCer
+ del %PFAT_UPDATEPKG_FILENAME%
+ if %START_COUNT% EQU %END_COUNT% goto FinishedAutoBuildPSL
+ Set /a START_COUNT+=1
+ goto AutoBuildPSL
+
+:FinishedAutoBuildPSL
+ Set /a START_COUNT=0
+:IntegrateAllROMs
+ Set /a START_FLASH_SECTION=%START_COUNT%*%FlashSectionSize%
+ Set /a START_FLASH_SECTION_IN_MB=%START_FLASH_SECTION%/%FlashSectionSize%
+ copy /b %PFAT_INTREGRATION_ROM%+APFAT%START_FLASH_SECTION_IN_MB%M.bin %PFAT_INTREGRATION_ROM%
+ del APFAT%START_FLASH_SECTION_IN_MB%M.bin
+ del AmiPfatBiosPSLOutput_%START_FLASH_SECTION_IN_MB%M.bin
+ if exist AMI_%START_FLASH_SECTION_IN_MB%M.rom (
+ del AMI_%START_FLASH_SECTION_IN_MB%M.rom
+ )
+ if %START_COUNT% EQU %END_COUNT% goto FinishedIntegrateAllROMs
+ Set /a START_COUNT+=1
+ goto IntegrateAllROMs
+
+:FinishedIntegrateAllROMs
+ del *.psl
+ Set /a END_COUNT+=1
+ del %ROM_PRIORITY%
+ if "%ROM_PRIORITY%" EQU "%DESCRIPTOR_REGION_ROM%" (
+ echo %MeType% /DESC %END_COUNT% ;%ROM_PRIORITY%>>%AMI_PFAT_FLASH_CONFIGURATIONS%
+ goto BUILD_GBE_REGION_ROM
+ )
+ if "%ROM_PRIORITY%" EQU "%GBE_REGION_ROM%" (
+ echo %MeType% /GBE %END_COUNT% ;%ROM_PRIORITY%>>%AMI_PFAT_FLASH_CONFIGURATIONS%
+ goto BUILD_ME_REGION_ROM
+ )
+ if "%ROM_PRIORITY%" EQU "%ME_REGION_ROM%" (
+ echo %MeType% /ME %END_COUNT% ;%ROM_PRIORITY%>>%AMI_PFAT_FLASH_CONFIGURATIONS%
+ goto BUILD_BIOS_REGION_ROM_FIRST_FV
+ )
+ echo %BiosType% %FlashCMD% %END_COUNT% ;%ROM_PRIORITY%>>%AMI_PFAT_FLASH_CONFIGURATIONS%
+ goto BUILD_BIOS_REGION_ROM_REMAINDER
+
+:BuildAmiPfatHeader
+ %WORKING_PATH%\BuildAmiPfatHeader.exe %AMI_PFAT_FLASH_CONFIGURATIONS% %AMI_PFAT_HEADER%
+ copy /b %AMI_PFAT_HEADER%+%PFAT_INTREGRATION_ROM% AMIPFAT_%INPUT_BIOS_IMAGE%
+ del %AMI_PFAT_HEADER%
+ del %PFAT_INTREGRATION_ROM%
+:END \ No newline at end of file
diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/CutRom.exe b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/CutRom.exe
new file mode 100644
index 0000000..910e46c
--- /dev/null
+++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/CutRom.exe
Binary files differ
diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PPB.exe b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PPB.exe
new file mode 100644
index 0000000..a7f27a9
--- /dev/null
+++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PPB.exe
Binary files differ
diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatCertHeader.bin b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatCertHeader.bin
new file mode 100644
index 0000000..1d9374d
--- /dev/null
+++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatCertHeader.bin
Binary files differ
diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatCryptoCon.exe b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatCryptoCon.exe
new file mode 100644
index 0000000..8914a6f
--- /dev/null
+++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatCryptoCon.exe
Binary files differ
diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.cif b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.cif
new file mode 100644
index 0000000..1dfa1b8
--- /dev/null
+++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.cif
@@ -0,0 +1,19 @@
+<component>
+ name = "PfatPubKeysAndBuildPSL"
+ category = ModulePart
+ LocalRoot = "Board\EM\Pfat\PfatPubKeysAndBuildPSL"
+ RefName = "PfatPubKeysAndBuildPSL"
+[files]
+"PfatPubKeysAndBuildPSL.sdl"
+"PfatPubKeysAndBuildPSL.mak"
+"dummy.bin"
+"PfatCertHeader.bin"
+"BuildPSL.bat"
+"BuildAmiPfatHeader.exe"
+"CutRom.exe"
+"keygen.exe"
+"PfatCryptoCon.exe"
+"PPB.exe"
+"psl2bin.exe"
+".VkeyExp"
+<endComponent>
diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.mak b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.mak
new file mode 100644
index 0000000..16fad9e
--- /dev/null
+++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.mak
@@ -0,0 +1,105 @@
+#*************************************************************************
+#*************************************************************************
+#** **
+#** (C)Copyright 1985-2012, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#*************************************************************************
+#*************************************************************************
+
+#*************************************************************************
+# $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatUtilsandScripts/PfatPubKeysAndBuildPSL.mak 1 10/29/12 4:04p Fredericko $
+#
+# $Revision: 1 $
+#
+# $Date: 10/29/12 4:04p $
+#*************************************************************************
+# Revision History
+# ----------------
+# $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelPfat/PfatUtilsandScripts/PfatPubKeysAndBuildPSL.mak $
+#
+# 1 10/29/12 4:04p Fredericko
+# [TAG] EIP844115
+# [Category] Improvement
+# [Description] Added PfatPubKeysAndBuildPSL. Added Tools CutRom for
+# stiching PfatImage, BuildAmiPfatHeader for creating Apfatdos header for
+# PFAT.
+# [Files] PfatPubKeysAndBuildPSL.cif
+# PfatPubKeysAndBuildPSL.sdl
+# PfatPubKeysAndBuildPSL.mak
+# dummy.bin
+# BuildPSL.bat
+# BuildAmiPfatHeader.exe
+# CutRom.exe
+#
+# 7 9/21/12 5:08p Fredericko
+# Modified to use cryptocon and keygen
+#
+# 4 9/17/12 4:34p Fredericko
+# Changes to create PSL at build time. Changes for SignPfat utility error
+# during build.
+#
+# 3 9/10/12 10:52p Fredericko
+#
+# 2 9/10/12 9:55p Fredericko
+#
+# 1 9/01/12 2:22a Fredericko
+#
+#*************************************************************************
+#*************************************************************************
+#<AMI_FHDR_START>
+#
+# Name: PfatPubKey.mak
+#
+# Description: Make for for PfatPubKey
+#
+#
+#<AMI_FHDR_END>
+#*************************************************************************
+all: PfatPubKeyModule
+
+PfatPubKeyModule : SETPFATPUBKEY
+
+PFAT_PUB_KEY_FFS_FILE_GUID = 8E295870-D377-4b75-BFDC-9AE2F6DBDE22
+
+SETPFATPUBKEY: $(BUILD_DIR)\PfatPubKey.ffs
+
+PUBLIC_KEY_FILENAME = $(PFATPUB_DIR)\PfatPublic.key
+PRIVATE_KEY_FILENAME = $(PFATPUB_DIR)\PfatPrivate.key
+PFAT_VKEY_EXP = $(PFATPUB_DIR)\.VkeyExp
+PUBLIC_KEY_FILENAME_HASH = $(PFATPUB_DIR)\PubKeyhash.bin
+
+PFAT_GENERATE_KEYS:
+ del $(PUBLIC_KEY_FILENAME_HASH)
+ if not exist $(PUBLIC_KEY_FILENAME) $(KEYGEN) $(PRIVATE_KEY_FILENAME) $(PUBLIC_KEY_FILENAME)
+ $(PFATCRYPTCON) -z -w -k $(PRIVATE_KEY_FILENAME) -f $(PFATPUB_DIR)\dummy.bin -s
+ copy /b .out_key + $(PFAT_VKEY_EXP) $(PUBLIC_KEY_FILENAME_HASH)
+ $(PFATCRYPTCON) -h2 -f $(PUBLIC_KEY_FILENAME_HASH) -o $(PUBLIC_KEY_FILENAME_HASH)
+
+PREPARE : PFAT_GENERATE_KEYS
+
+$(BUILD_DIR)\PfatPubKey.ffs : $(PUBLIC_KEY_FILENAME_HASH)
+ $(MAKE) /f Core\FFS.mak \
+ BUILD_DIR=$(BUILD_DIR) \
+ GUID=$(PFAT_PUB_KEY_FFS_FILE_GUID) \
+ TYPE=EFI_FV_FILETYPE_FREEFORM \
+ BINFILE=$** FFSFILE=$@ COMPRESS=0 NAME=PfatPubKey
+
+#*************************************************************************
+#*************************************************************************
+#** **
+#** (C)Copyright 1985-2012, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#*************************************************************************
+#*************************************************************************
diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.sdl b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.sdl
new file mode 100644
index 0000000..21bdb8f
--- /dev/null
+++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/PfatPubKeysAndBuildPSL.sdl
@@ -0,0 +1,265 @@
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2012, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#**********************************************************************
+
+TOKEN
+ Name = "PfatPubKey_SUPPORT"
+ Value = "1"
+ Help = ""
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetMAK = Yes
+ Master = Yes
+End
+
+MODULE
+ File = "PfatPubKeysAndBuildPSL.mak"
+End
+
+TOKEN
+ Name = "PFATCRYPTCON"
+ Value = "$(PFATPUB_DIR)\PfatCryptoCon.exe"
+ TokenType = Expression
+ TargetMAK = Yes
+End
+
+TOKEN
+ Name = "KEYGEN"
+ Value = "$(PFATPUB_DIR)\Keygen.exe"
+ TokenType = Expression
+ TargetMAK = Yes
+End
+
+ELINK
+ Name = "$(BUILD_DIR)\PfatPubKey.ffs"
+ Parent = "FV_BB"
+ InvokeOrder = AfterParent
+End
+
+TOKEN
+ Name = "PfatMaxSectionSize"
+ Help = "Mega Byte is a unit of section size"
+ Value = "0x100000"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetMAK = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "BIOSStartingAddress"
+ Help = ""
+ Value = "0xFFFFFFFF - $(FLASH_SIZE) + 1"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetMAK = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "FV_NvRamStartingAddress"
+ Help = "ROM address"
+ Value = "$(NVRAM_ADDRESS) - $(BIOSStartingAddress)"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetMAK = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "FV_NvRamLength"
+ Help = "ROM address"
+ Value = "($(NVRAM_BLOCKS)*$(FLASH_BLOCK_SIZE))*2"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetMAK = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "FV_OAStartingAddress"
+ Help = "ROM address"
+ Value = "$(OEM_ACTIVATION_TABLE_ADDRESS) - $(BIOSStartingAddress)"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetMAK = Yes
+ TargetH = Yes
+ Token = "OEM_ACTIVATION_TABLE_LOCATION" "=" "1"
+End
+
+TOKEN
+ Name = "FV_OA_Length"
+ Help = "ROM address"
+ Value = "$(OEM_ACTIVATION_TABLE_SIZE)"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetMAK = Yes
+ TargetH = Yes
+ Token = "OEM_ACTIVATION_TABLE_LOCATION" "=" "1"
+End
+
+TOKEN
+ Name = "FV_DataStartingAddress"
+ Help = "ROM address"
+ Value = "$(FV_DATA_BASE) - $(BIOSStartingAddress)"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetMAK = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "FV_DataLength"
+ Help = "ROM address"
+ Value = "$(FV_DATA_SIZE)"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetMAK = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "FV_MainStartingAddress"
+ Help = "ROM address"
+ Value = "$(FV_MAIN_BASE) - $(BIOSStartingAddress)"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetMAK = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "FV_MainLength"
+ Help = "ROM address"
+ Value = "$(FV_MAIN_BLOCKS)*$(FLASH_BLOCK_SIZE)"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetMAK = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "FV_BBStartingAddress"
+ Help = "ROM address"
+ Value = "$(FV_BB_BASE) - $(BIOSStartingAddress)"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetMAK = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "FV_BBLength"
+ Help = "ROM address"
+ Value = "$(FV_BB_BLOCKS)*$(FLASH_BLOCK_SIZE)"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetMAK = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "BUILD_PSL_BATCH"
+ Value = "$(PFATPUB_DIR)\\BuildPSL.bat"
+ TokenType = Expression
+ TargetMAK = Yes
+End
+
+TOKEN
+ Name = "FITC_OUTIMAGE_MAP"
+ Value = "$(ROM_IMAGE_DIR)\Build\OutImage.map"
+ TokenType = Expression
+ TargetMAK = Yes
+End
+
+TOKEN
+ Name = "BUILD_BIOS_MAP"
+ Value = "$(PFATPUB_DIR)\BuildBIOS.map"
+ TokenType = Expression
+ TargetMAK = Yes
+End
+
+TOKEN
+ Name = "BUILD_BIOS_FV_NVRAM"
+ Value = "echo BIOS_FV_NVRAM.bin /N $(FV_NvRamStartingAddress) $(FV_NvRamLength)>$(BUILD_BIOS_MAP)"
+ TokenType = Expression
+ TargetMAK = Yes
+End
+
+TOKEN
+ Name = "BUILD_BIOS_FV_OA"
+ Value = "echo BIOS_FV_OA.bin /OA $(FV_OAStartingAddress) $(FV_OA_Length)>>$(BUILD_BIOS_MAP)"
+ TokenType = Expression
+ TargetMAK = Yes
+ Token = "OEM_ACTIVATION_TABLE_LOCATION" "=" "1"
+End
+
+TOKEN
+ Name = "BUILD_BIOS_FV_DATA"
+ Value = "echo BIOS_FV_DATA.bin /DATA $(FV_DataStartingAddress) $(FV_DataLength)>>$(BUILD_BIOS_MAP)"
+ TokenType = Expression
+ TargetMAK = Yes
+End
+
+TOKEN
+ Name = "BUILD_BIOS_FV_MAIN"
+ Value = "echo BIOS_FV_MAIN.bin /P $(FV_MainStartingAddress) $(FV_MainLength)>>$(BUILD_BIOS_MAP)"
+ TokenType = Expression
+ TargetMAK = Yes
+End
+
+TOKEN
+ Name = "BUILD_BIOS_FV_BB"
+ Value = "echo BIOS_FV_BB.bin /B $(FV_BBStartingAddress) $(FV_BBLength)>>$(BUILD_BIOS_MAP)"
+ TokenType = Expression
+ TargetMAK = Yes
+End
+
+TOKEN
+ Name = "BUILD_BIOS_MAP_SET"
+ Value = "$(BUILD_BIOS_FV_NVRAM) && $(BUILD_BIOS_FV_MAIN) && $(BUILD_BIOS_FV_DATA) && $(BUILD_BIOS_FV_BB)"
+ TokenType = Expression
+ TargetMAK = Yes
+End
+
+TOKEN
+ Name = "BUILD_BIOS_MAP_SET"
+ Value = "$(BUILD_BIOS_FV_NVRAM) && $(BUILD_BIOS_FV_OA) && $(BUILD_BIOS_FV_MAIN) && $(BUILD_BIOS_FV_DATA) && $(BUILD_BIOS_FV_BB)"
+ TokenType = Expression
+ TargetMAK = Yes
+ Token = "OEM_ACTIVATION_TABLE_LOCATION" "=" "1"
+End
+
+TOKEN
+ Name = "BUILD_PSL_SET"
+ Value = "$(BUILD_PSL_BATCH) $(FITC_OUTIMAGE_MAP) $(BUILD_BIOS_MAP) $(PFATPUB_DIR) $(BIOS_SVN) $(PfatMaxSectionSize)"
+ TokenType = Expression
+ TargetMAK = Yes
+End
+
+PATH
+ Name = "PFATPUB_DIR"
+End
+
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2012, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#**********************************************************************
+
diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/dummy.bin b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/dummy.bin
new file mode 100644
index 0000000..9613d45
--- /dev/null
+++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/dummy.bin
@@ -0,0 +1 @@
+极始极始极始极始极始极始极始极 \ No newline at end of file
diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/keygen.exe b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/keygen.exe
new file mode 100644
index 0000000..e81033b
--- /dev/null
+++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/keygen.exe
Binary files differ
diff --git a/Board/EM/Pfat/PfatPubKeysAndBuildPSL/psl2bin.exe b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/psl2bin.exe
new file mode 100644
index 0000000..b095917
--- /dev/null
+++ b/Board/EM/Pfat/PfatPubKeysAndBuildPSL/psl2bin.exe
Binary files differ