Fix issue with fixing tabs.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11297 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
andrewfish
2011-02-02 23:19:30 +00:00
parent 5d23922674
commit 2ac288f919
73 changed files with 2559 additions and 2559 deletions

View File

@ -111,8 +111,8 @@ CpuSetMemoryAttributes (
EFI_STATUS EFI_STATUS
InitializeExceptions ( InitializeExceptions (
\s\sIN EFI_CPU_ARCH_PROTOCOL *Cpu IN EFI_CPU_ARCH_PROTOCOL *Cpu
\s\s); );
EFI_STATUS EFI_STATUS
SyncCacheConfig ( SyncCacheConfig (

View File

@ -338,11 +338,11 @@ UpdatePageEntries (
// modify cacheability attributes // modify cacheability attributes
EntryMask |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_MASK; EntryMask |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_MASK;
if (FeaturePcdGet(PcdEfiUncachedMemoryToStronglyOrdered)) { if (FeaturePcdGet(PcdEfiUncachedMemoryToStronglyOrdered)) {
\s\s\s\s // map to strongly ordered // map to strongly ordered
\s\s\s\s EntryValue |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_STRONGLY_ORDERED; // TEX[2:0] = 0, C=0, B=0 EntryValue |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_STRONGLY_ORDERED; // TEX[2:0] = 0, C=0, B=0
} else { } else {
\s\s // map to normal non-cachable // map to normal non-cachable
\s\s EntryValue |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_NON_CACHEABLE; // TEX [2:0]= 001 = 0x2, B=0, C=0 EntryValue |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_NON_CACHEABLE; // TEX [2:0]= 001 = 0x2, B=0, C=0
} }
break; break;
@ -486,11 +486,11 @@ UpdateSectionEntries (
// modify cacheability attributes // modify cacheability attributes
EntryMask |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_MASK; EntryMask |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_MASK;
if (FeaturePcdGet(PcdEfiUncachedMemoryToStronglyOrdered)) { if (FeaturePcdGet(PcdEfiUncachedMemoryToStronglyOrdered)) {
\s\s\s\s // map to strongly ordered // map to strongly ordered
\s\s\s\s EntryValue |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_STRONGLY_ORDERED; // TEX[2:0] = 0, C=0, B=0 EntryValue |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_STRONGLY_ORDERED; // TEX[2:0] = 0, C=0, B=0
} else { } else {
\s\s // map to normal non-cachable // map to normal non-cachable
\s\s EntryValue |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_NON_CACHEABLE; // TEX [2:0]= 001 = 0x2, B=0, C=0 EntryValue |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_NON_CACHEABLE; // TEX [2:0]= 001 = 0x2, B=0, C=0
} }
break; break;

View File

@ -64,7 +64,7 @@
#define DMC_DIRECT_CMD_MEMCMD_NOP (0x3 << 18) #define DMC_DIRECT_CMD_MEMCMD_NOP (0x3 << 18)
#define DMC_DIRECT_CMD_MEMCMD_DPD (0x1 << 22) #define DMC_DIRECT_CMD_MEMCMD_DPD (0x1 << 22)
#define DMC_DIRECT_CMD_BANKADDR(n) ((n & 0x3) << 16) #define DMC_DIRECT_CMD_BANKADDR(n) ((n & 0x3) << 16)
#define DMC_DIRECT_CMD_CHIP_ADDR(n)\s\s\s\s((n & 0x3) << 20) #define DMC_DIRECT_CMD_CHIP_ADDR(n) ((n & 0x3) << 20)
// //
@ -163,25 +163,25 @@ VOID PL341DmcInit(struct pl341_dmc_config *config) {
// //
if (config->has_qos) { if (config->has_qos) {
\s\s// CLCD AXIID = 000 // CLCD AXIID = 000
\s\sDmcWriteReg(DMC_ID_0_CFG_REG, DMC_ID_CFG_QOS_ENABLE | DMC_ID_CFG_QOS_MIN); DmcWriteReg(DMC_ID_0_CFG_REG, DMC_ID_CFG_QOS_ENABLE | DMC_ID_CFG_QOS_MIN);
\s\s// Default disable QoS // Default disable QoS
\s\sDmcWriteReg(DMC_ID_1_CFG_REG, DMC_ID_CFG_QOS_DISABLE); DmcWriteReg(DMC_ID_1_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
\s\sDmcWriteReg(DMC_ID_2_CFG_REG, DMC_ID_CFG_QOS_DISABLE); DmcWriteReg(DMC_ID_2_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
\s\sDmcWriteReg(DMC_ID_3_CFG_REG, DMC_ID_CFG_QOS_DISABLE); DmcWriteReg(DMC_ID_3_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
\s\sDmcWriteReg(DMC_ID_4_CFG_REG, DMC_ID_CFG_QOS_DISABLE); DmcWriteReg(DMC_ID_4_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
\s\sDmcWriteReg(DMC_ID_5_CFG_REG, DMC_ID_CFG_QOS_DISABLE); DmcWriteReg(DMC_ID_5_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
\s\sDmcWriteReg(DMC_ID_6_CFG_REG, DMC_ID_CFG_QOS_DISABLE); DmcWriteReg(DMC_ID_6_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
\s\sDmcWriteReg(DMC_ID_7_CFG_REG, DMC_ID_CFG_QOS_DISABLE); DmcWriteReg(DMC_ID_7_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
\s\sDmcWriteReg(DMC_ID_8_CFG_REG, DMC_ID_CFG_QOS_DISABLE); DmcWriteReg(DMC_ID_8_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
\s\sDmcWriteReg(DMC_ID_9_CFG_REG, DMC_ID_CFG_QOS_DISABLE); DmcWriteReg(DMC_ID_9_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
\s\sDmcWriteReg(DMC_ID_10_CFG_REG, DMC_ID_CFG_QOS_DISABLE); DmcWriteReg(DMC_ID_10_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
\s\sDmcWriteReg(DMC_ID_11_CFG_REG, DMC_ID_CFG_QOS_DISABLE); DmcWriteReg(DMC_ID_11_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
\s\sDmcWriteReg(DMC_ID_12_CFG_REG, DMC_ID_CFG_QOS_DISABLE); DmcWriteReg(DMC_ID_12_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
\s\sDmcWriteReg(DMC_ID_13_CFG_REG, DMC_ID_CFG_QOS_DISABLE); DmcWriteReg(DMC_ID_13_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
\s\sDmcWriteReg(DMC_ID_14_CFG_REG, DMC_ID_CFG_QOS_DISABLE); DmcWriteReg(DMC_ID_14_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
\s\sDmcWriteReg(DMC_ID_15_CFG_REG, DMC_ID_CFG_QOS_DISABLE); DmcWriteReg(DMC_ID_15_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
} }
// //
@ -231,104 +231,104 @@ VOID PL341DmcInit(struct pl341_dmc_config *config) {
// |====================================== // |======================================
DmcWriteReg(DMC_MEMORY_CFG3_REG, config->memory_cfg3); DmcWriteReg(DMC_MEMORY_CFG3_REG, config->memory_cfg3);
\s\s// |======================================================== // |========================================================
\s\s// |Set Test Chip PHY Registers via PL341 User Config Reg // |Set Test Chip PHY Registers via PL341 User Config Reg
\s\s// |Note that user_cfgX registers are Write Only // |Note that user_cfgX registers are Write Only
\s\s// | // |
\s\s// |DLL Freq set = 250MHz - 266MHz // |DLL Freq set = 250MHz - 266MHz
\s\s// |======================================================== // |========================================================
\s\sDmcWriteReg(DMC_USER_0_CFG_REG, 0x7C924924); DmcWriteReg(DMC_USER_0_CFG_REG, 0x7C924924);
\s\s// user_config2 // user_config2
\s\s// ------------ // ------------
\s\s// Set defaults before calibrating the DDR2 buffer impendence // Set defaults before calibrating the DDR2 buffer impendence
\s\s// -Disable ODT // -Disable ODT
\s\s// -Default drive strengths // -Default drive strengths
\s\sDmcWriteReg(DMC_USER_2_CFG_REG, 0x40000198); DmcWriteReg(DMC_USER_2_CFG_REG, 0x40000198);
\s\s// |======================================================= // |=======================================================
\s\s// |Auto calibrate the DDR2 buffers impendence // |Auto calibrate the DDR2 buffers impendence
\s\s// |======================================================= // |=======================================================
\s\sval32 = DmcReadReg(DMC_USER_STATUS_REG); val32 = DmcReadReg(DMC_USER_STATUS_REG);
\s\swhile (!(val32 & 0x100)) { while (!(val32 & 0x100)) {
\s\s val32 = DmcReadReg(DMC_USER_STATUS_REG); val32 = DmcReadReg(DMC_USER_STATUS_REG);
\s\s} }
\s\s// Set the output driven strength // Set the output driven strength
\s\sDmcWriteReg(DMC_USER_2_CFG_REG, 0x40800000 | DmcWriteReg(DMC_USER_2_CFG_REG, 0x40800000 |
\s\s\s\s (TC_UIOLHXC_VALUE << TC_UIOLHNC_SHIFT) | (TC_UIOLHXC_VALUE << TC_UIOLHNC_SHIFT) |
\s\s\s\s (TC_UIOLHXC_VALUE << TC_UIOLHPC_SHIFT) | (TC_UIOLHXC_VALUE << TC_UIOLHPC_SHIFT) |
\s\s\s\s (0x1 << TC_UIOHOCT_SHIFT) | (0x1 << TC_UIOHOCT_SHIFT) |
\s\s\s\s (0x1 << TC_UIOHSTOP_SHIFT)); (0x1 << TC_UIOHSTOP_SHIFT));
\s\s// |====================================== // |======================================
\s\s// | Set PL341 Feature Control Register // | Set PL341 Feature Control Register
\s\s// |====================================== // |======================================
\s\s// | Disable early BRESP - use to optimise CLCD performance // | Disable early BRESP - use to optimise CLCD performance
\s\sDmcWriteReg(DMC_FEATURE_CRTL_REG, 0x00000001); DmcWriteReg(DMC_FEATURE_CRTL_REG, 0x00000001);
//================= //=================
// Config memories // Config memories
//================= //=================
for (chip = 0; chip <= config-> max_chip; chip++) { for (chip = 0; chip <= config-> max_chip; chip++) {
\s\s// send nop // send nop
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_NOP); DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_NOP);
\s\s// pre-charge all // pre-charge all
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_PRECHARGEALL); DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_PRECHARGEALL);
\s\s// delay // delay
\s\sfor (i = 0; i < 10; i++) { for (i = 0; i < 10; i++) {
\s\s val32 = DmcReadReg(DMC_STATUS_REG); val32 = DmcReadReg(DMC_STATUS_REG);
\s\s} }
\s\s// set (EMR2) extended mode register 2 // set (EMR2) extended mode register 2
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DmcWriteReg(DMC_DIRECT_CMD_REG,
\s\s\s\s DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_CHIP_ADDR(chip) |
\s\s\s\s DMC_DIRECT_CMD_BANKADDR(2) | DMC_DIRECT_CMD_BANKADDR(2) |
\s\s\s\s DMC_DIRECT_CMD_MEMCMD_EXTMODEREG); DMC_DIRECT_CMD_MEMCMD_EXTMODEREG);
\s\s// set (EMR3) extended mode register 3 // set (EMR3) extended mode register 3
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DmcWriteReg(DMC_DIRECT_CMD_REG,
\s\s\s\s DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_CHIP_ADDR(chip) |
\s\s\s\s DMC_DIRECT_CMD_BANKADDR(3) | DMC_DIRECT_CMD_BANKADDR(3) |
\s\s\s\s DMC_DIRECT_CMD_MEMCMD_EXTMODEREG); DMC_DIRECT_CMD_MEMCMD_EXTMODEREG);
\s\s// ================================= // =================================
\s\s// set (EMR) Extended Mode Register // set (EMR) Extended Mode Register
\s\s// ================================== // ==================================
\s\s// Put into OCD default state // Put into OCD default state
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DmcWriteReg(DMC_DIRECT_CMD_REG,
\s\s\s\s DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_CHIP_ADDR(chip) |
\s\s\s\s DMC_DIRECT_CMD_BANKADDR(1) | DMC_DIRECT_CMD_BANKADDR(1) |
\s\s\s\s DMC_DIRECT_CMD_MEMCMD_EXTMODEREG); DMC_DIRECT_CMD_MEMCMD_EXTMODEREG);
\s\s// =========================================================== // ===========================================================
\s\s// set (MR) mode register - With DLL reset // set (MR) mode register - With DLL reset
\s\s// =========================================================== // ===========================================================
\s\s// Burst Length = 4 (010) // Burst Length = 4 (010)
\s\s// Burst Type = Seq (0) // Burst Type = Seq (0)
\s\s// Latency = 4 (100) // Latency = 4 (100)
\s\s// Test mode = Off (0) // Test mode = Off (0)
\s\s// DLL reset = Yes (1) // DLL reset = Yes (1)
\s\s// Wr Recovery = 4 (011) // Wr Recovery = 4 (011)
\s\s// PD = Normal (0) // PD = Normal (0)
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00080742); DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00080742);
\s\s// pre-charge all // pre-charge all
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_PRECHARGEALL); DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_PRECHARGEALL);
\s\s// auto-refresh // auto-refresh
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH); DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH);
\s\s// auto-refresh // auto-refresh
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH); DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH);
\s\s// delay // delay
\s\sfor (i = 0; i < 10; i++) { for (i = 0; i < 10; i++) {
\s\s val32 = DmcReadReg(DMC_STATUS_REG); val32 = DmcReadReg(DMC_STATUS_REG);
\s\s} }
\s\s// =========================================================== // ===========================================================
\s\s// set (MR) mode register - Without DLL reset // set (MR) mode register - Without DLL reset
\s\s// =========================================================== // ===========================================================
// auto-refresh // auto-refresh
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH); DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH);
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00080642); DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00080642);
@ -338,26 +338,26 @@ VOID PL341DmcInit(struct pl341_dmc_config *config) {
val32 = DmcReadReg(DMC_STATUS_REG); val32 = DmcReadReg(DMC_STATUS_REG);
} }
\s\s// ====================================================== // ======================================================
\s\s// set (EMR) extended mode register - Enable OCD defaults // set (EMR) extended mode register - Enable OCD defaults
\s\s// ====================================================== // ======================================================
\s\sval32 = 0; //NOP val32 = 0; //NOP
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00090000 | DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00090000 |
\s\s\s\s (DDR_EMR_OCD_DEFAULT << DDR_EMR_OCD_SHIFT) | (DDR_EMR_OCD_DEFAULT << DDR_EMR_OCD_SHIFT) |
\s\s\s\s DDR_EMR_RTT_75R | DDR_EMR_RTT_75R |
\s\s\s\s (DDR_EMR_ODS_VAL << DDR_EMR_ODS_MASK)); (DDR_EMR_ODS_VAL << DDR_EMR_ODS_MASK));
\s\s// delay // delay
\s\sfor (i = 0; i < 10; i++) { for (i = 0; i < 10; i++) {
\s\s val32 = DmcReadReg(DMC_STATUS_REG); val32 = DmcReadReg(DMC_STATUS_REG);
\s\s} }
\s\s// Set (EMR) extended mode register - OCD Exit // Set (EMR) extended mode register - OCD Exit
\s\sval32 = 0; //NOP val32 = 0; //NOP
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00090000 | DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00090000 |
\s\s\s\s (DDR_EMR_OCD_NS << DDR_EMR_OCD_SHIFT) | (DDR_EMR_OCD_NS << DDR_EMR_OCD_SHIFT) |
\s\s\s\s DDR_EMR_RTT_75R | DDR_EMR_RTT_75R |
\s\s\s\s (DDR_EMR_ODS_VAL << DDR_EMR_ODS_MASK)); (DDR_EMR_ODS_VAL << DDR_EMR_ODS_MASK));
} }

View File

@ -21,11 +21,11 @@ EFIAPI
PL390GicEnableInterruptInterface ( PL390GicEnableInterruptInterface (
IN INTN GicInterruptInterfaceBase IN INTN GicInterruptInterfaceBase
) )
{\s\s {
\s\s/* /*
\s\s * Enable the CPU interface in Non-Secure world * Enable the CPU interface in Non-Secure world
\s\s * Note: The ICCICR register is banked when Security extensions are implemented\s\s * Note: The ICCICR register is banked when Security extensions are implemented
\s\s */ */
MmioWrite32(GicInterruptInterfaceBase + GIC_ICCICR,0x00000001); MmioWrite32(GicInterruptInterfaceBase + GIC_ICCICR,0x00000001);
} }
@ -50,7 +50,7 @@ PL390GicSendSgiTo (
IN INTN CPUTargetList IN INTN CPUTargetList
) )
{ {
\s\sMmioWrite32(GicDistributorBase + GIC_ICDSGIR, ((TargetListFilter & 0x3) << 24) | ((CPUTargetList & 0xFF) << 16)); MmioWrite32(GicDistributorBase + GIC_ICDSGIR, ((TargetListFilter & 0x3) << 24) | ((CPUTargetList & 0xFF) << 16));
} }
UINT32 UINT32
@ -65,9 +65,9 @@ PL390GicAcknowledgeSgiFrom (
InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR); InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);
//Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID //Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID
\s\sif (((CoreId & 0x7) << 10) == (InterruptId & 0x1C00)) { if (((CoreId & 0x7) << 10) == (InterruptId & 0x1C00)) {
\s\s //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR
\s\s\s\sMmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId); MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);
return 1; return 1;
} else { } else {
return 0; return 0;
@ -87,9 +87,9 @@ PL390GicAcknowledgeSgi2From (
InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR); InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);
//Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID //Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID
\s\sif((((CoreId & 0x7) << 10) | (SgiId & 0x3FF)) == (InterruptId & 0x1FFF)) { if((((CoreId & 0x7) << 10) | (SgiId & 0x3FF)) == (InterruptId & 0x1FFF)) {
\s\s //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR
\s\s\s\sMmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId); MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);
return 1; return 1;
} else { } else {
return 0; return 0;

View File

@ -34,11 +34,11 @@ PL390GicSetupNonSecure (
//Check if there are any pending interrupts //Check if there are any pending interrupts
while(0 != (MmioRead32(GicDistributorBase + GIC_ICDICPR) & 0xF)) while(0 != (MmioRead32(GicDistributorBase + GIC_ICDICPR) & 0xF))
{ {
\s\s //Some of the SGI's are still pending, read Ack register and send End of Interrupt Signal //Some of the SGI's are still pending, read Ack register and send End of Interrupt Signal
\s\s UINTN InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR); UINTN InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);
\s\s //Write to End of interrupt signal //Write to End of interrupt signal
\s\s MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId); MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);
} }
// Ensure all GIC interrupts are Non-Secure // Ensure all GIC interrupts are Non-Secure
@ -56,19 +56,19 @@ PL390GicEnableInterruptInterface (
IN INTN GicInterruptInterfaceBase IN INTN GicInterruptInterfaceBase
) )
{ {
\s\sMmioWrite32(GicInterruptInterfaceBase + GIC_ICCPMR, 0x000000FF); /* Set Priority Mask to allow interrupts */ MmioWrite32(GicInterruptInterfaceBase + GIC_ICCPMR, 0x000000FF); /* Set Priority Mask to allow interrupts */
\s\s/* /*
\s\s * Enable CPU interface in Secure world * Enable CPU interface in Secure world
* Enable CPU inteface in Non-secure World * Enable CPU inteface in Non-secure World
\s\s * Signal Secure Interrupts to CPU using FIQ line * * Signal Secure Interrupts to CPU using FIQ line *
\s\s */ */
MmioWrite32(GicInterruptInterfaceBase + GIC_ICCICR, MmioWrite32(GicInterruptInterfaceBase + GIC_ICCICR,
\s\s\s\sGIC_ICCICR_ENABLE_SECURE(1) | GIC_ICCICR_ENABLE_SECURE(1) |
\s\s\s\sGIC_ICCICR_ENABLE_NS(1) | GIC_ICCICR_ENABLE_NS(1) |
\s\s\s\sGIC_ICCICR_ACK_CTL(0) | GIC_ICCICR_ACK_CTL(0) |
\s\s\s\sGIC_ICCICR_SIGNAL_SECURE_TO_FIQ(1) | GIC_ICCICR_SIGNAL_SECURE_TO_FIQ(1) |
\s\s\s\sGIC_ICCICR_USE_SBPR(0)); GIC_ICCICR_USE_SBPR(0));
} }
VOID VOID
@ -88,7 +88,7 @@ PL390GicSendSgiTo (
IN INTN CPUTargetList IN INTN CPUTargetList
) )
{ {
\s\sMmioWrite32(GicDistributorBase + GIC_ICDSGIR, ((TargetListFilter & 0x3) << 24) | ((CPUTargetList & 0xFF) << 16)); MmioWrite32(GicDistributorBase + GIC_ICDSGIR, ((TargetListFilter & 0x3) << 24) | ((CPUTargetList & 0xFF) << 16));
} }
UINT32 UINT32
@ -103,9 +103,9 @@ PL390GicAcknowledgeSgiFrom (
InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR); InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);
//Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID //Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID
\s\sif (((CoreId & 0x7) << 10) == (InterruptId & 0x1C00)) { if (((CoreId & 0x7) << 10) == (InterruptId & 0x1C00)) {
\s\s //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR
\s\s\s\sMmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId); MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);
return 1; return 1;
} else { } else {
return 0; return 0;
@ -125,9 +125,9 @@ PL390GicAcknowledgeSgi2From (
InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR); InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);
//Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID //Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID
\s\sif((((CoreId & 0x7) << 10) | (SgiId & 0x3FF)) == (InterruptId & 0x1FFF)) { if((((CoreId & 0x7) << 10) | (SgiId & 0x3FF)) == (InterruptId & 0x1FFF)) {
\s\s //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR
\s\s\s\sMmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId); MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);
return 1; return 1;
} else { } else {
return 0; return 0;

View File

@ -17,32 +17,32 @@
struct pl341_dmc_config { struct pl341_dmc_config {
UINTN\s\sbase; // base address for the controller UINTN base; // base address for the controller
UINTN\s\shas_qos; // has QoS registers UINTN has_qos; // has QoS registers
UINTN\s\smax_chip; // number of memory chips accessible UINTN max_chip; // number of memory chips accessible
UINT32\s\srefresh_prd; UINT32 refresh_prd;
UINT32\s\scas_latency; UINT32 cas_latency;
UINT32\s\swrite_latency; UINT32 write_latency;
UINT32\s\st_mrd; UINT32 t_mrd;
UINT32\s\st_ras; UINT32 t_ras;
UINT32\s\st_rc; UINT32 t_rc;
UINT32\s\st_rcd; UINT32 t_rcd;
UINT32\s\st_rfc; UINT32 t_rfc;
UINT32\s\st_rp; UINT32 t_rp;
UINT32\s\st_rrd; UINT32 t_rrd;
UINT32\s\st_wr; UINT32 t_wr;
UINT32\s\st_wtr; UINT32 t_wtr;
UINT32\s\st_xp; UINT32 t_xp;
UINT32\s\st_xsr; UINT32 t_xsr;
UINT32\s\st_esr; UINT32 t_esr;
UINT32\s\smemory_cfg; UINT32 memory_cfg;
UINT32\s\smemory_cfg2; UINT32 memory_cfg2;
UINT32\s\smemory_cfg3; UINT32 memory_cfg3;
UINT32\s\schip_cfg0; UINT32 chip_cfg0;
UINT32\s\schip_cfg1; UINT32 chip_cfg1;
UINT32\s\schip_cfg2; UINT32 chip_cfg2;
UINT32\s\schip_cfg3; UINT32 chip_cfg3;
UINT32\s\st_faw; UINT32 t_faw;
}; };
/* Memory config bit fields */ /* Memory config bit fields */
@ -60,21 +60,21 @@ struct pl341_dmc_config {
#define DMC_MEMORY_CONFIG_BURST_4 (0x2 << 15) #define DMC_MEMORY_CONFIG_BURST_4 (0x2 << 15)
#define DMC_MEMORY_CONFIG_BURST_8 (0x3 << 15) #define DMC_MEMORY_CONFIG_BURST_8 (0x3 << 15)
#define DMC_MEMORY_CONFIG_BURST_16 (0x4 << 15) #define DMC_MEMORY_CONFIG_BURST_16 (0x4 << 15)
#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_1\s\s\s\s(0x0 << 21) #define DMC_MEMORY_CONFIG_ACTIVE_CHIP_1 (0x0 << 21)
#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_2\s\s\s\s(0x1 << 21) #define DMC_MEMORY_CONFIG_ACTIVE_CHIP_2 (0x1 << 21)
#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_3\s\s\s\s(0x2 << 21) #define DMC_MEMORY_CONFIG_ACTIVE_CHIP_3 (0x2 << 21)
#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_4\s\s\s\s(0x3 << 21) #define DMC_MEMORY_CONFIG_ACTIVE_CHIP_4 (0x3 << 21)
#define DMC_MEMORY_CFG2_CLK_ASYNC\s\s\s\s(0x0 << 0) #define DMC_MEMORY_CFG2_CLK_ASYNC (0x0 << 0)
#define DMC_MEMORY_CFG2_CLK_SYNC\s\s\s\s(0x1 << 0) #define DMC_MEMORY_CFG2_CLK_SYNC (0x1 << 0)
#define DMC_MEMORY_CFG2_DQM_INIT\s\s\s\s(0x1 << 2) #define DMC_MEMORY_CFG2_DQM_INIT (0x1 << 2)
#define DMC_MEMORY_CFG2_CKE_INIT\s\s\s\s(0x1 << 3) #define DMC_MEMORY_CFG2_CKE_INIT (0x1 << 3)
#define DMC_MEMORY_CFG2_BANK_BITS_2\s\s\s\s(0x0 << 4) #define DMC_MEMORY_CFG2_BANK_BITS_2 (0x0 << 4)
#define DMC_MEMORY_CFG2_BANK_BITS_3\s\s\s\s(0x3 << 4) #define DMC_MEMORY_CFG2_BANK_BITS_3 (0x3 << 4)
#define DMC_MEMORY_CFG2_MEM_WIDTH_16\s\s\s\s(0x0 << 6) #define DMC_MEMORY_CFG2_MEM_WIDTH_16 (0x0 << 6)
#define DMC_MEMORY_CFG2_MEM_WIDTH_32\s\s\s\s(0x1 << 6) #define DMC_MEMORY_CFG2_MEM_WIDTH_32 (0x1 << 6)
#define DMC_MEMORY_CFG2_MEM_WIDTH_64\s\s\s\s(0x2 << 6) #define DMC_MEMORY_CFG2_MEM_WIDTH_64 (0x2 << 6)
#define DMC_MEMORY_CFG2_MEM_WIDTH_RESERVED\s\s(0x3 << 6) #define DMC_MEMORY_CFG2_MEM_WIDTH_RESERVED (0x3 << 6)

View File

@ -29,7 +29,7 @@
#define L230_TAG_LATENCY 0x108 #define L230_TAG_LATENCY 0x108
#define L230_DATA_LATENCY 0x10C #define L230_DATA_LATENCY 0x10C
#define L2X0_INTCLEAR 0x220 #define L2X0_INTCLEAR 0x220
#define L2X0_CACHE_SYNC\s\s\s\s\s\s0x730 #define L2X0_CACHE_SYNC 0x730
#define L2X0_INVWAY 0x77C #define L2X0_INVWAY 0x77C
#define L2X0_CLEAN_WAY 0x7BC #define L2X0_CLEAN_WAY 0x7BC
#define L2X0_PFCTRL 0xF60 #define L2X0_PFCTRL 0xF60

View File

@ -57,4 +57,4 @@ struct _VIRTUAL_UNCACHED_PAGES_PROTOCOL {
extern EFI_GUID gVirtualUncachedPagesProtocolGuid; extern EFI_GUID gVirtualUncachedPagesProtocolGuid;
#endif\s\s #endif

View File

@ -58,18 +58,18 @@ ASM_PFX(ArmEnableInstructionCache):
orr r0,r0,r1 @Set I bit orr r0,r0,r1 @Set I bit
mcr p15,0,r0,c1,c0,0 @Write control register configuration data mcr p15,0,r0,c1,c0,0 @Write control register configuration data
bx LR bx LR
\s\s
ASM_PFX(ArmDisableInstructionCache): ASM_PFX(ArmDisableInstructionCache):
ldr r1,=IC_ON ldr r1,=IC_ON
mrc p15,0,r0,c1,c0,0 @Read control register configuration data mrc p15,0,r0,c1,c0,0 @Read control register configuration data
bic r0,r0,r1 @Clear I bit. bic r0,r0,r1 @Clear I bit.
mcr p15,0,r0,c1,c0,0 @Write control register configuration data mcr p15,0,r0,c1,c0,0 @Write control register configuration data
bx LR bx LR
\s\s
ASM_PFX(ArmInvalidateInstructionCache): ASM_PFX(ArmInvalidateInstructionCache):
mov r0,#0 mov r0,#0
mcr p15,0,r0,c7,c5,0 @Invalidate entire Instruction cache. mcr p15,0,r0,c7,c5,0 @Invalidate entire Instruction cache.
\s\s @Also flushes the branch target cache. @Also flushes the branch target cache.
mov r0,#0 mov r0,#0
mcr p15,0,r0,c7,c10,4 @Data write buffer mcr p15,0,r0,c7,c10,4 @Data write buffer
bx LR bx LR
@ -99,7 +99,7 @@ ASM_PFX(ArmEnableDataCache):
orr R0,R0,R1 @Set C bit orr R0,R0,R1 @Set C bit
mcr p15,0,r0,c1,c0,0 @Write control register configuration data mcr p15,0,r0,c1,c0,0 @Write control register configuration data
bx LR bx LR
\s\s
ASM_PFX(ArmDisableDataCache): ASM_PFX(ArmDisableDataCache):
ldr R1,=DC_ON ldr R1,=DC_ON
mrc p15,0,R0,c1,c0,0 @Read control register configuration data mrc p15,0,R0,c1,c0,0 @Read control register configuration data
@ -111,7 +111,7 @@ ASM_PFX(ArmCleanDataCache):
mrc p15,0,r15,c7,c10,3 mrc p15,0,r15,c7,c10,3
bne ASM_PFX(ArmCleanDataCache) bne ASM_PFX(ArmCleanDataCache)
mov R0,#0 mov R0,#0
mcr p15,0,R0,c7,c10,4\s\s@Drain write buffer mcr p15,0,R0,c7,c10,4 @Drain write buffer
bx LR bx LR
ASM_PFX(ArmInvalidateDataCache): ASM_PFX(ArmInvalidateDataCache):
@ -125,7 +125,7 @@ ASM_PFX(ArmCleanInvalidateDataCache):
mrc p15,0,r15,c7,c14,3 mrc p15,0,r15,c7,c14,3
bne ASM_PFX(ArmCleanInvalidateDataCache) bne ASM_PFX(ArmCleanInvalidateDataCache)
mov R0,#0 mov R0,#0
mcr p15,0,R0,c7,c10,4\s\s @Drain write buffer mcr p15,0,R0,c7,c10,4 @Drain write buffer
bx LR bx LR
ASM_PFX(ArmEnableBranchPrediction): ASM_PFX(ArmEnableBranchPrediction):

View File

@ -112,7 +112,7 @@ ArmCleanDataCache
MRC p15,0,r15,c7,c10,3 MRC p15,0,r15,c7,c10,3
BNE ArmCleanDataCache BNE ArmCleanDataCache
MOV R0,#0 MOV R0,#0
MCR p15,0,R0,c7,c10,4\s\s ;Drain write buffer MCR p15,0,R0,c7,c10,4 ;Drain write buffer
BX LR BX LR
ArmInvalidateDataCache ArmInvalidateDataCache
@ -126,7 +126,7 @@ ArmCleanInvalidateDataCache
MRC p15,0,r15,c7,c14,3 MRC p15,0,r15,c7,c14,3
BNE ArmCleanInvalidateDataCache BNE ArmCleanInvalidateDataCache
MOV R0,#0 MOV R0,#0
MCR p15,0,R0,c7,c10,4\s\s ;Drain write buffer MCR p15,0,R0,c7,c10,4 ;Drain write buffer
BX LR BX LR
ArmEnableBranchPrediction ArmEnableBranchPrediction

View File

@ -70,17 +70,17 @@ ArmDisableAsynchronousAbort
ArmEnableIrq ArmEnableIrq
cpsie i cpsie i
isb isb
\s\sbx LR bx LR
ArmDisableIrq ArmDisableIrq
cpsid i cpsid i
isb isb
\s\sbx LR bx LR
ArmEnableFiq ArmEnableFiq
cpsie f cpsie f
isb isb
\s\sbx LR bx LR
ArmDisableFiq ArmDisableFiq
cpsid f cpsid f
@ -99,17 +99,17 @@ ArmDisableInterrupts
ArmGetInterruptState ArmGetInterruptState
mrs R0,CPSR mrs R0,CPSR
tst R0,#0x80\s\s ;Check if IRQ is enabled. tst R0,#0x80 ;Check if IRQ is enabled.
moveq R0,#1 moveq R0,#1
movne R0,#0 movne R0,#0
\s\sbx LR bx LR
ArmGetFiqState ArmGetFiqState
\s\smrs R0,CPSR mrs R0,CPSR
\s\stst R0,#0x40\s\s ;Check if FIQ is enabled. tst R0,#0x40 ;Check if FIQ is enabled.
\s\smoveq R0,#1 moveq R0,#1
\s\smovne R0,#0 movne R0,#0
\s\sbx LR bx LR
ArmInvalidateTlb ArmInvalidateTlb
mov r0,#0 mov r0,#0
@ -126,7 +126,7 @@ ArmSetTTBR0
ArmGetTTBR0BaseAddress ArmGetTTBR0BaseAddress
mrc p15,0,r0,c2,c0,0 mrc p15,0,r0,c2,c0,0
ldr\s\s r1, = 0xFFFFC000 ldr r1, = 0xFFFFC000
and r0, r0, r1 and r0, r0, r1
isb isb
bx lr bx lr

View File

@ -31,7 +31,7 @@ ASM_PFX(ArmGetScuBaseAddress):
# the Configuration BAR as a stack is not necessary setup. The SCU is at the # the Configuration BAR as a stack is not necessary setup. The SCU is at the
# offset 0x0000 from the Private Memory Region. # offset 0x0000 from the Private Memory Region.
mrc p15, 4, r0, c15, c0, 0 mrc p15, 4, r0, c15, c0, 0
bx\s\slr bx lr
# IN None # IN None
# OUT r1 = SCU enabled (boolean) # OUT r1 = SCU enabled (boolean)

View File

@ -31,7 +31,7 @@ ArmGetScuBaseAddress
// the Configuration BAR as a stack is not necessary setup. The SCU is at the // the Configuration BAR as a stack is not necessary setup. The SCU is at the
// offset 0x0000 from the Private Memory Region. // offset 0x0000 from the Private Memory Region.
mrc p15, 4, r0, c15, c0, 0 mrc p15, 4, r0, c15, c0, 0
bx\s\slr bx lr
// IN None // IN None
// OUT r1 = SCU enabled (boolean) // OUT r1 = SCU enabled (boolean)

View File

@ -80,21 +80,21 @@ ASM_PFX(ArmCleanInvalidateDataCacheEntryByMVA):
ASM_PFX(ArmInvalidateDataCacheEntryBySetWay): ASM_PFX(ArmInvalidateDataCacheEntryBySetWay):
mcr p15, 0, r0, c7, c6, 2 @ Invalidate this line\s\s\s\s mcr p15, 0, r0, c7, c6, 2 @ Invalidate this line
dsb dsb
isb isb
bx lr bx lr
ASM_PFX(ArmCleanInvalidateDataCacheEntryBySetWay): ASM_PFX(ArmCleanInvalidateDataCacheEntryBySetWay):
mcr p15, 0, r0, c7, c14, 2 @ Clean and Invalidate this line\s\s\s\s mcr p15, 0, r0, c7, c14, 2 @ Clean and Invalidate this line
dsb dsb
isb isb
bx lr bx lr
ASM_PFX(ArmCleanDataCacheEntryBySetWay): ASM_PFX(ArmCleanDataCacheEntryBySetWay):
mcr p15, 0, r0, c7, c10, 2 @ Clean this line\s\s\s\s mcr p15, 0, r0, c7, c10, 2 @ Clean this line
dsb dsb
isb isb
bx lr bx lr
@ -119,7 +119,7 @@ ASM_PFX(ArmDisableMmu):
bic R0,R0,#1 bic R0,R0,#1
mcr p15,0,R0,c1,c0,0 @Disable MMU mcr p15,0,R0,c1,c0,0 @Disable MMU
\s\smcr \s\s\s\sp15,0,R0,c8,c7,0 @Invalidate TLB mcr p15,0,R0,c8,c7,0 @Invalidate TLB
mcr p15,0,R0,c7,c5,6 @Invalidate Branch predictor array mcr p15,0,R0,c7,c5,6 @Invalidate Branch predictor array
dsb dsb
isb isb
@ -309,7 +309,7 @@ ASM_PFX(ArmCallWFI):
//Note: Return 0 in Uniprocessor implementation //Note: Return 0 in Uniprocessor implementation
ASM_PFX(ArmReadCbar): ASM_PFX(ArmReadCbar):
mrc p15, 4, r0, c15, c0, 0\s\s//Read Configuration Base Address Register mrc p15, 4, r0, c15, c0, 0 //Read Configuration Base Address Register
bx lr bx lr
ASM_PFX(ArmInvalidateInstructionAndDataTlb): ASM_PFX(ArmInvalidateInstructionAndDataTlb):
@ -318,7 +318,7 @@ ASM_PFX(ArmInvalidateInstructionAndDataTlb):
bx lr bx lr
ASM_PFX(ArmReadMpidr): ASM_PFX(ArmReadMpidr):
mrc p15, 0, r0, c0, c0, 5\s\s @ read MPIDR mrc p15, 0, r0, c0, c0, 5 @ read MPIDR
bx lr bx lr
ASM_FUNCTION_REMOVE_IF_UNREFERENCED ASM_FUNCTION_REMOVE_IF_UNREFERENCED

View File

@ -82,21 +82,21 @@ ArmCleanInvalidateDataCacheEntryByMVA
ArmInvalidateDataCacheEntryBySetWay ArmInvalidateDataCacheEntryBySetWay
mcr p15, 0, r0, c7, c6, 2 ; Invalidate this line\s\s\s\s mcr p15, 0, r0, c7, c6, 2 ; Invalidate this line
dsb dsb
isb isb
bx lr bx lr
ArmCleanInvalidateDataCacheEntryBySetWay ArmCleanInvalidateDataCacheEntryBySetWay
mcr p15, 0, r0, c7, c14, 2 ; Clean and Invalidate this line\s\s\s\s mcr p15, 0, r0, c7, c14, 2 ; Clean and Invalidate this line
dsb dsb
isb isb
bx lr bx lr
ArmCleanDataCacheEntryBySetWay ArmCleanDataCacheEntryBySetWay
mcr p15, 0, r0, c7, c10, 2 ; Clean this line\s\s\s\s mcr p15, 0, r0, c7, c10, 2 ; Clean this line
dsb dsb
isb isb
bx lr bx lr
@ -125,7 +125,7 @@ ArmDisableMmu
bic R0,R0,#1 ; Clear SCTLR.M bit : Disable MMU bic R0,R0,#1 ; Clear SCTLR.M bit : Disable MMU
mcr p15,0,R0,c1,c0,0 ; Write R0 into SCTLR (Write control register configuration data) mcr p15,0,R0,c1,c0,0 ; Write R0 into SCTLR (Write control register configuration data)
mcr \s\s p15,0,R0,c8,c7,0 ; TLBIALL : Invalidate unified TLB mcr p15,0,R0,c8,c7,0 ; TLBIALL : Invalidate unified TLB
mcr p15,0,R0,c7,c5,6 ; BPIALL : Invalidate entire branch predictor array mcr p15,0,R0,c7,c5,6 ; BPIALL : Invalidate entire branch predictor array
dsb dsb
isb isb
@ -307,7 +307,7 @@ ArmCallWFI
//Note: Return 0 in Uniprocessor implementation //Note: Return 0 in Uniprocessor implementation
ArmReadCbar ArmReadCbar
mrc p15, 4, r0, c15, c0, 0\s\s//Read Configuration Base Address Register mrc p15, 4, r0, c15, c0, 0 //Read Configuration Base Address Register
bx lr bx lr
ArmInvalidateInstructionAndDataTlb ArmInvalidateInstructionAndDataTlb
@ -316,7 +316,7 @@ ArmInvalidateInstructionAndDataTlb
bx lr bx lr
ArmReadMpidr ArmReadMpidr
mrc p15, 0, r0, c0, c0, 5\s\s\s\s; read MPIDR mrc p15, 0, r0, c0, c0, 5 ; read MPIDR
bx lr bx lr
END END

View File

@ -42,48 +42,48 @@ ASM_PFX(Cp15CacheInfo):
bx LR bx LR
ASM_PFX(ArmEnableInterrupts): ASM_PFX(ArmEnableInterrupts):
\s\smrs R0,CPSR mrs R0,CPSR
\s\sbic R0,R0,#0x80\s\s\s\s@Enable IRQ interrupts bic R0,R0,#0x80 @Enable IRQ interrupts
\s\smsr CPSR_c,R0 msr CPSR_c,R0
\s\sbx LR bx LR
ASM_PFX(ArmDisableInterrupts): ASM_PFX(ArmDisableInterrupts):
\s\smrs R0,CPSR mrs R0,CPSR
\s\sorr R1,R0,#0x80\s\s\s\s@Disable IRQ interrupts orr R1,R0,#0x80 @Disable IRQ interrupts
\s\smsr CPSR_c,R1 msr CPSR_c,R1
tst R0,#0x80 tst R0,#0x80
moveq R0,#1 moveq R0,#1
movne R0,#0 movne R0,#0
\s\sbx LR bx LR
ASM_PFX(ArmGetInterruptState): ASM_PFX(ArmGetInterruptState):
\s\smrs R0,CPSR mrs R0,CPSR
\s\stst R0,#0x80\s\s @Check if IRQ is enabled. tst R0,#0x80 @Check if IRQ is enabled.
\s\smoveq R0,#1 moveq R0,#1
\s\smovne R0,#0 movne R0,#0
\s\sbx LR bx LR
ASM_PFX(ArmEnableFiq): ASM_PFX(ArmEnableFiq):
\s\smrs R0,CPSR mrs R0,CPSR
\s\sbic R0,R0,#0x40\s\s\s\s@Enable FIQ interrupts bic R0,R0,#0x40 @Enable FIQ interrupts
\s\smsr CPSR_c,R0 msr CPSR_c,R0
\s\sbx LR bx LR
ASM_PFX(ArmDisableFiq): ASM_PFX(ArmDisableFiq):
\s\smrs R0,CPSR mrs R0,CPSR
\s\sorr R1,R0,#0x40\s\s\s\s@Disable FIQ interrupts orr R1,R0,#0x40 @Disable FIQ interrupts
\s\smsr CPSR_c,R1 msr CPSR_c,R1
tst R0,#0x80 tst R0,#0x80
moveq R0,#1 moveq R0,#1
movne R0,#0 movne R0,#0
\s\sbx LR bx LR
ASM_PFX(ArmGetFiqState): ASM_PFX(ArmGetFiqState):
\s\smrs R0,CPSR mrs R0,CPSR
\s\stst R0,#0x80\s\s @Check if FIQ is enabled. tst R0,#0x80 @Check if FIQ is enabled.
\s\smoveq R0,#1 moveq R0,#1
\s\smovne R0,#0 movne R0,#0
\s\sbx LR bx LR
ASM_PFX(ArmInvalidateTlb): ASM_PFX(ArmInvalidateTlb):
mov r0,#0 mov r0,#0

View File

@ -48,48 +48,48 @@ ArmIsMPCore
bx LR bx LR
ArmEnableInterrupts ArmEnableInterrupts
\s\smrs R0,CPSR mrs R0,CPSR
\s\sbic R0,R0,#0x80\s\s\s\s;Enable IRQ interrupts bic R0,R0,#0x80 ;Enable IRQ interrupts
\s\smsr CPSR_c,R0 msr CPSR_c,R0
\s\sbx LR bx LR
ArmDisableInterrupts ArmDisableInterrupts
\s\smrs R0,CPSR mrs R0,CPSR
\s\sorr R1,R0,#0x80\s\s\s\s;Disable IRQ interrupts orr R1,R0,#0x80 ;Disable IRQ interrupts
\s\smsr CPSR_c,R1 msr CPSR_c,R1
tst R0,#0x80 tst R0,#0x80
moveq R0,#1 moveq R0,#1
movne R0,#0 movne R0,#0
\s\sbx LR bx LR
ArmGetInterruptState ArmGetInterruptState
\s\smrs R0,CPSR mrs R0,CPSR
\s\stst R0,#0x80\s\s ;Check if IRQ is enabled. tst R0,#0x80 ;Check if IRQ is enabled.
\s\smoveq R0,#1 moveq R0,#1
\s\smovne R0,#0 movne R0,#0
\s\sbx LR bx LR
ArmEnableFiq ArmEnableFiq
\s\smrs R0,CPSR mrs R0,CPSR
\s\sbic R0,R0,#0x40\s\s\s\s;Enable IRQ interrupts bic R0,R0,#0x40 ;Enable IRQ interrupts
\s\smsr CPSR_c,R0 msr CPSR_c,R0
\s\sbx LR bx LR
ArmDisableFiq ArmDisableFiq
\s\smrs R0,CPSR mrs R0,CPSR
\s\sorr R1,R0,#0x40\s\s\s\s;Disable IRQ interrupts orr R1,R0,#0x40 ;Disable IRQ interrupts
\s\smsr CPSR_c,R1 msr CPSR_c,R1
tst R0,#0x40 tst R0,#0x40
moveq R0,#1 moveq R0,#1
movne R0,#0 movne R0,#0
\s\sbx LR bx LR
ArmGetFiqState ArmGetFiqState
\s\smrs R0,CPSR mrs R0,CPSR
\s\stst R0,#0x40\s\s ;Check if IRQ is enabled. tst R0,#0x40 ;Check if IRQ is enabled.
\s\smoveq R0,#1 moveq R0,#1
\s\smovne R0,#0 movne R0,#0
\s\sbx LR bx LR
ArmInvalidateTlb ArmInvalidateTlb
mov r0,#0 mov r0,#0

View File

@ -17,7 +17,7 @@
#include <Library/IoLib.h> #include <Library/IoLib.h>
VOID ArmClearMPCoreMailbox() { VOID ArmClearMPCoreMailbox() {
\s\sMmioWrite32(PcdGet32(PcdMPCoreMailboxClearAddress),PcdGet32(PcdMPCoreMailboxClearValue)); MmioWrite32(PcdGet32(PcdMPCoreMailboxClearAddress),PcdGet32(PcdMPCoreMailboxClearValue));
} }
UINTN ArmGetMPCoreMailbox() { UINTN ArmGetMPCoreMailbox() {

View File

@ -72,8 +72,8 @@ EFI_STATUS TZASCSetRegion(UINTN TzascBase, UINTN RegionId, UINTN Enabled, UINTN
Region = (UINT32*)((UINTN)TzascBase + TZASC_REGIONS_REG + (RegionId * 0x10)); Region = (UINT32*)((UINTN)TzascBase + TZASC_REGIONS_REG + (RegionId * 0x10));
MmioWrite32((UINTN)(Region), LowAddress&0xFFFF8000); MmioWrite32((UINTN)(Region), LowAddress&0xFFFF8000);
\s\sMmioWrite32((UINTN)(Region+1), HighAddress); MmioWrite32((UINTN)(Region+1), HighAddress);
\s\sMmioWrite32((UINTN)(Region+2), ((Security & 0xF) <<28) | ((Size & 0x3F) << 1) | (Enabled & 0x1)); MmioWrite32((UINTN)(Region+2), ((Security & 0xF) <<28) | ((Size & 0x3F) << 1) | (Enabled & 0x1));
return EFI_SUCCESS; return EFI_SUCCESS;
} }

View File

@ -42,71 +42,71 @@ InternalMemCopyMem (
GCC_ASM_EXPORT(InternalMemCopyMem) GCC_ASM_EXPORT(InternalMemCopyMem)
ASM_PFX(InternalMemCopyMem): ASM_PFX(InternalMemCopyMem):
\s\sstmfd\s\ssp!, {r4-r11, lr} stmfd sp!, {r4-r11, lr}
\s\stst\s\sr0, #3 tst r0, #3
\s\smov\s\sr11, r0 mov r11, r0
\s\smov\s\sr10, r0 mov r10, r0
\s\smov\s\sip, r2 mov ip, r2
\s\smov\s\slr, r1 mov lr, r1
\s\smovne\s\sr0, #0 movne r0, #0
\s\sbne\s\sL4 bne L4
\s\stst\s\sr1, #3 tst r1, #3
\s\smovne\s\sr3, #0 movne r3, #0
\s\smoveq\s\sr3, #1 moveq r3, #1
\s\scmp\s\sr2, #31 cmp r2, #31
\s\smovls\s\sr0, #0 movls r0, #0
\s\sandhi\s\sr0, r3, #1 andhi r0, r3, #1
L4: L4:
\s\scmp\s\sr11, r1 cmp r11, r1
\s\sbcc\s\sL26 bcc L26
\s\sbls\s\sL7 bls L7
\s\srsb\s\sr3, r1, r11 rsb r3, r1, r11
\s\scmp\s\sip, r3 cmp ip, r3
\s\sbcc\s\sL26 bcc L26
\s\scmp\s\sip, #0 cmp ip, #0
\s\sbeq\s\sL7 beq L7
\s\sadd\s\sr10, r11, ip add r10, r11, ip
\s\sadd\s\slr, ip, r1 add lr, ip, r1
\s\sb\s\sL16 b L16
L29: L29:
\s\ssub\s\sip, ip, #8 sub ip, ip, #8
\s\scmp\s\sip, #7 cmp ip, #7
\s\sldrd\s\sr2, [lr, #-8]! ldrd r2, [lr, #-8]!
\s\smovls\s\sr0, #0 movls r0, #0
\s\scmp\s\sip, #0 cmp ip, #0
\s\sstrd\s\sr2, [r10, #-8]! strd r2, [r10, #-8]!
\s\sbeq\s\sL7 beq L7
L16: L16:
\s\scmp\s\sr0, #0 cmp r0, #0
\s\sbne\s\sL29 bne L29
\s\ssub\s\sr3, lr, #1 sub r3, lr, #1
\s\ssub\s\sip, ip, #1 sub ip, ip, #1
\s\sldrb\s\sr3, [r3, #0]\s\s ldrb r3, [r3, #0]
\s\ssub\s\sr2, r10, #1 sub r2, r10, #1
\s\scmp\s\sip, #0 cmp ip, #0
\s\ssub\s\sr10, r10, #1 sub r10, r10, #1
\s\ssub\s\slr, lr, #1 sub lr, lr, #1
\s\sstrb\s\sr3, [r2, #0] strb r3, [r2, #0]
\s\sbne\s\sL16 bne L16
\s\sb L7 b L7
L11: L11:
\s\sldrb\s\sr3, [lr], #1\s\s ldrb r3, [lr], #1
\s\ssub\s\sip, ip, #1 sub ip, ip, #1
\s\sstrb\s\sr3, [r10], #1 strb r3, [r10], #1
L26: L26:
\s\scmp\s\sip, #0 cmp ip, #0
\s\sbeq\s\sL7 beq L7
L30: L30:
\s\scmp\s\sr0, #0 cmp r0, #0
\s\sbeq\s\sL11 beq L11
\s\ssub\s\sip, ip, #32 sub ip, ip, #32
\s\scmp\s\sip, #31 cmp ip, #31
\s\sldmia\s\slr!, {r2-r9} ldmia lr!, {r2-r9}
\s\smovls\s\sr0, #0 movls r0, #0
\s\scmp\s\sip, #0 cmp ip, #0
\s\sstmia\s\sr10!, {r2-r9} stmia r10!, {r2-r9}
\s\sbne\s\sL30 bne L30
L7: L7:
mov\s\sr0, r11 mov r0, r11
\s\sldmfd\s\ssp!, {r4-r11, pc} ldmfd sp!, {r4-r11, pc}

View File

@ -37,78 +37,78 @@ InternalMemCopyMem (
IN UINTN Length IN UINTN Length
) )
**/ **/
\s\sEXPORT InternalMemCopyMem EXPORT InternalMemCopyMem
\s\sAREA AsmMemStuff, CODE, READONLY AREA AsmMemStuff, CODE, READONLY
InternalMemCopyMem InternalMemCopyMem
\s\sstmfd\s\ssp!, {r4-r11, lr} stmfd sp!, {r4-r11, lr}
\s\stst\s\sr0, #3 tst r0, #3
\s\smov\s\sr11, r0 mov r11, r0
\s\smov\s\sr10, r0 mov r10, r0
\s\smov\s\sip, r2 mov ip, r2
\s\smov\s\slr, r1 mov lr, r1
\s\smovne\s\sr0, #0 movne r0, #0
\s\sbne\s\sL4 bne L4
\s\stst\s\sr1, #3 tst r1, #3
\s\smovne\s\sr3, #0 movne r3, #0
\s\smoveq\s\sr3, #1 moveq r3, #1
\s\scmp\s\sr2, #31 cmp r2, #31
\s\smovls\s\sr0, #0 movls r0, #0
\s\sandhi\s\sr0, r3, #1 andhi r0, r3, #1
L4 L4
\s\scmp\s\sr11, r1 cmp r11, r1
\s\sbcc\s\sL26 bcc L26
\s\sbls\s\sL7 bls L7
\s\srsb\s\sr3, r1, r11 rsb r3, r1, r11
\s\scmp\s\sip, r3 cmp ip, r3
\s\sbcc\s\sL26 bcc L26
\s\scmp\s\sip, #0 cmp ip, #0
\s\sbeq\s\sL7 beq L7
\s\sadd\s\sr10, r11, ip add r10, r11, ip
\s\sadd\s\slr, ip, r1 add lr, ip, r1
\s\sb\s\sL16 b L16
L29 L29
\s\ssub\s\sip, ip, #8 sub ip, ip, #8
\s\scmp\s\sip, #7 cmp ip, #7
\s\sldrd\s\sr2, [lr, #-8]! ldrd r2, [lr, #-8]!
\s\smovls\s\sr0, #0 movls r0, #0
\s\scmp\s\sip, #0 cmp ip, #0
\s\sstrd\s\sr2, [r10, #-8]! strd r2, [r10, #-8]!
\s\sbeq\s\sL7 beq L7
L16 L16
\s\scmp\s\sr0, #0 cmp r0, #0
\s\sbne\s\sL29 bne L29
\s\ssub\s\sr3, lr, #1 sub r3, lr, #1
\s\ssub\s\sip, ip, #1 sub ip, ip, #1
\s\sldrb\s\sr3, [r3, #0]\s\s ldrb r3, [r3, #0]
\s\ssub\s\sr2, r10, #1 sub r2, r10, #1
\s\scmp\s\sip, #0 cmp ip, #0
\s\ssub\s\sr10, r10, #1 sub r10, r10, #1
\s\ssub\s\slr, lr, #1 sub lr, lr, #1
\s\sstrb\s\sr3, [r2, #0] strb r3, [r2, #0]
\s\sbne\s\sL16 bne L16
\s\sb L7 b L7
L11 L11
\s\sldrb\s\sr3, [lr], #1\s\s ldrb r3, [lr], #1
\s\ssub\s\sip, ip, #1 sub ip, ip, #1
\s\sstrb\s\sr3, [r10], #1 strb r3, [r10], #1
L26 L26
\s\scmp\s\sip, #0 cmp ip, #0
\s\sbeq\s\sL7 beq L7
L30 L30
\s\scmp\s\sr0, #0 cmp r0, #0
\s\sbeq\s\sL11 beq L11
\s\ssub\s\sip, ip, #32 sub ip, ip, #32
\s\scmp\s\sip, #31 cmp ip, #31
\s\sldmia\s\slr!, {r2-r9} ldmia lr!, {r2-r9}
\s\smovls\s\sr0, #0 movls r0, #0
\s\scmp\s\sip, #0 cmp ip, #0
\s\sstmia\s\sr10!, {r2-r9} stmia r10!, {r2-r9}
\s\sbne\s\sL30 bne L30
L7 L7
mov\s\sr0, r11 mov r0, r11
\s\sldmfd\s\ssp!, {r4-r11, pc} ldmfd sp!, {r4-r11, pc}
\s\s
END END

View File

@ -34,49 +34,49 @@ InternalMemSetMem (
IN UINT8 Value IN UINT8 Value
) )
**/ **/
\s\s
.text .text
.align 2 .align 2
GCC_ASM_EXPORT(InternalMemSetMem) GCC_ASM_EXPORT(InternalMemSetMem)
ASM_PFX(InternalMemSetMem): ASM_PFX(InternalMemSetMem):
\s\sstmfd\s\ssp!, {r4-r11, lr} stmfd sp!, {r4-r11, lr}
\s\stst\s\s r0, #3 tst r0, #3
\s\smovne\s\sr3, #0 movne r3, #0
\s\smoveq\s\sr3, #1 moveq r3, #1
\s\scmp\s\s r1, #31 cmp r1, #31
\s\smovls lr, #0 movls lr, #0
\s\sandhi\s\slr, r3, #1 andhi lr, r3, #1
\s\scmp\s\s lr, #0 cmp lr, #0
\s\smov\s\s r12, r0 mov r12, r0
\s\sbne\s\s L31 bne L31
L32: L32:
\s\smov\s\s r3, #0 mov r3, #0
\s\sb\s\s L43 b L43
L31: L31:
and r4, r2, #0xff and r4, r2, #0xff
orr r4, r4, r4, LSL #8 orr r4, r4, r4, LSL #8
orr r4, r4, r4, LSL #16 orr r4, r4, r4, LSL #16
\s\smov r5, r4 mov r5, r4
\s\smov r5, r4 mov r5, r4
\s\smov r6, r4 mov r6, r4
\s\smov r7, r4 mov r7, r4
\s\smov r8, r4 mov r8, r4
\s\smov r9, r4 mov r9, r4
\s\smov r10, r4 mov r10, r4
\s\smov r11, r4 mov r11, r4
\s\sb\s\s L32 b L32
L34: L34:
\s\scmp\s\s lr, #0 cmp lr, #0
\s\sstreqb\s\sr2, [r12], #1 streqb r2, [r12], #1
\s\ssubeq\s\s r1, r1, #1 subeq r1, r1, #1
\s\sbeq\s\s L43 beq L43
\s\ssub\s\s r1, r1, #32 sub r1, r1, #32
\s\scmp\s\s r1, #31 cmp r1, #31
\s\smovls\s\s lr, r3 movls lr, r3
\s\sstmia\s\s r12!, {r4-r11} stmia r12!, {r4-r11}
L43: L43:
\s\scmp\s\s r1, #0 cmp r1, #0
\s\sbne\s\s L34 bne L34
\s\sldmfd\s\s sp!, {r4-r11, pc} ldmfd sp!, {r4-r11, pc}
\s\s

View File

@ -33,51 +33,51 @@ InternalMemSetMem (
IN UINT8 Value IN UINT8 Value
) )
**/ **/
\s\s
\s\sEXPORT InternalMemSetMem EXPORT InternalMemSetMem
\s\s
\s\sAREA AsmMemStuff, CODE, READONLY AREA AsmMemStuff, CODE, READONLY
InternalMemSetMem InternalMemSetMem
\s\sstmfd\s\ssp!, {r4-r11, lr} stmfd sp!, {r4-r11, lr}
\s\stst\s\s r0, #3 tst r0, #3
\s\smovne\s\sr3, #0 movne r3, #0
\s\smoveq\s\sr3, #1 moveq r3, #1
\s\scmp\s\s r1, #31 cmp r1, #31
\s\smovls lr, #0 movls lr, #0
\s\sandhi\s\slr, r3, #1 andhi lr, r3, #1
\s\scmp\s\s lr, #0 cmp lr, #0
\s\smov\s\s r12, r0 mov r12, r0
\s\sbne\s\s L31 bne L31
L32 L32
\s\smov\s\s r3, #0 mov r3, #0
\s\sb\s\s L43 b L43
L31 L31
and r4, r2, #0xff and r4, r2, #0xff
orr r4, r4, r4, LSL #8 orr r4, r4, r4, LSL #8
orr r4, r4, r4, LSL #16 orr r4, r4, r4, LSL #16
\s\smov r5, r4 mov r5, r4
\s\smov r5, r4 mov r5, r4
\s\smov r6, r4 mov r6, r4
\s\smov r7, r4 mov r7, r4
\s\smov r8, r4 mov r8, r4
\s\smov r9, r4 mov r9, r4
\s\smov r10, r4 mov r10, r4
\s\smov r11, r4 mov r11, r4
\s\sb\s\s L32 b L32
L34 L34
\s\scmp\s\s lr, #0 cmp lr, #0
\s\sstreqb\s\sr2, [r12], #1 streqb r2, [r12], #1
\s\ssubeq\s\s r1, r1, #1 subeq r1, r1, #1
\s\sbeq\s\s L43 beq L43
\s\ssub\s\s r1, r1, #32 sub r1, r1, #32
\s\scmp\s\s r1, #31 cmp r1, #31
\s\smovls\s\s lr, r3 movls lr, r3
\s\sstmia\s\s r12!, {r4-r11} stmia r12!, {r4-r11}
L43 L43
\s\scmp\s\s r1, #0 cmp r1, #0
\s\sbne\s\s L34 bne L34
\s\sldmfd\s\s sp!, {r4-r11, pc} ldmfd sp!, {r4-r11, pc}
\s\s
END END

View File

@ -42,73 +42,73 @@ InternalMemCopyMem (
GCC_ASM_EXPORT(InternalMemCopyMem) GCC_ASM_EXPORT(InternalMemCopyMem)
ASM_PFX(InternalMemCopyMem): ASM_PFX(InternalMemCopyMem):
\s\sstmfd\s\ssp!, {r4, r9, lr} stmfd sp!, {r4, r9, lr}
\s\stst\s\sr0, #3 tst r0, #3
\s\smov\s\sr4, r0 mov r4, r0
\s\smov\s\sr9, r0 mov r9, r0
\s\smov\s\sip, r2 mov ip, r2
\s\smov\s\slr, r1 mov lr, r1
\s\smovne\s\sr0, #0 movne r0, #0
\s\sbne\s\sL4 bne L4
\s\stst\s\sr1, #3 tst r1, #3
\s\smovne\s\sr3, #0 movne r3, #0
\s\smoveq\s\sr3, #1 moveq r3, #1
\s\scmp\s\sr2, #127 cmp r2, #127
\s\smovls\s\sr0, #0 movls r0, #0
\s\sandhi\s\sr0, r3, #1 andhi r0, r3, #1
L4: L4:
\s\scmp\s\sr4, r1 cmp r4, r1
\s\sbcc\s\sL26 bcc L26
\s\sbls\s\sL7 bls L7
\s\srsb\s\sr3, r1, r4 rsb r3, r1, r4
\s\scmp\s\sip, r3 cmp ip, r3
\s\sbcc\s\sL26 bcc L26
\s\scmp\s\sip, #0 cmp ip, #0
\s\sbeq\s\sL7 beq L7
\s\sadd\s\sr9, r4, ip add r9, r4, ip
\s\sadd\s\slr, ip, r1 add lr, ip, r1
\s\sb\s\sL16 b L16
L29: L29:
\s\ssub\s\sip, ip, #8 sub ip, ip, #8
\s\scmp\s\sip, #7 cmp ip, #7
\s\sldrd\s\sr2, [lr, #-8]! ldrd r2, [lr, #-8]!
\s\smovls\s\sr0, #0 movls r0, #0
\s\scmp\s\sip, #0 cmp ip, #0
\s\sstrd\s\sr2, [r9, #-8]! strd r2, [r9, #-8]!
\s\sbeq\s\sL7 beq L7
L16: L16:
\s\scmp\s\sr0, #0 cmp r0, #0
\s\sbne\s\sL29 bne L29
\s\ssub\s\sr3, lr, #1 sub r3, lr, #1
\s\ssub\s\sip, ip, #1 sub ip, ip, #1
\s\sldrb\s\sr3, [r3, #0]\s\s ldrb r3, [r3, #0]
\s\ssub\s\sr2, r9, #1 sub r2, r9, #1
\s\scmp\s\sip, #0 cmp ip, #0
\s\ssub\s\sr9, r9, #1 sub r9, r9, #1
\s\ssub\s\slr, lr, #1 sub lr, lr, #1
\s\sstrb\s\sr3, [r2, #0] strb r3, [r2, #0]
\s\sbne\s\sL16 bne L16
\s\sb L7 b L7
L11: L11:
\s\sldrb\s\sr3, [lr], #1\s\s ldrb r3, [lr], #1
\s\ssub\s\sip, ip, #1 sub ip, ip, #1
\s\sstrb\s\sr3, [r9], #1 strb r3, [r9], #1
L26: L26:
\s\scmp\s\sip, #0 cmp ip, #0
\s\sbeq\s\sL7 beq L7
L30: L30:
\s\scmp\s\sr0, #0 cmp r0, #0
\s\sbeq\s\sL11 beq L11
\s\ssub\s\sip, ip, #128 // 32 sub ip, ip, #128 // 32
\s\scmp\s\sip, #127 // 31 cmp ip, #127 // 31
\s\svldm lr!, {d0-d15} vldm lr!, {d0-d15}
\s\smovls\s\sr0, #0 movls r0, #0
\s\scmp\s\sip, #0 cmp ip, #0
\s\svstm r9!, {d0-d15} vstm r9!, {d0-d15}
\s\sbne\s\sL30 bne L30
L7: L7:
dsb dsb
mov\s\sr0, r4 mov r0, r4
\s\sldmfd\s\ssp!, {r4, r9, pc} ldmfd sp!, {r4, r9, pc}

View File

@ -37,79 +37,79 @@ InternalMemCopyMem (
IN UINTN Length IN UINTN Length
) )
**/ **/
\s\sEXPORT InternalMemCopyMem EXPORT InternalMemCopyMem
\s\sAREA AsmMemStuff, CODE, READONLY AREA AsmMemStuff, CODE, READONLY
InternalMemCopyMem InternalMemCopyMem
\s\sstmfd\s\ssp!, {r4, r9, lr} stmfd sp!, {r4, r9, lr}
\s\stst\s\sr0, #3 tst r0, #3
\s\smov\s\sr4, r0 mov r4, r0
\s\smov\s\sr9, r0 mov r9, r0
\s\smov\s\sip, r2 mov ip, r2
\s\smov\s\slr, r1 mov lr, r1
\s\smovne\s\sr0, #0 movne r0, #0
\s\sbne\s\sL4 bne L4
\s\stst\s\sr1, #3 tst r1, #3
\s\smovne\s\sr3, #0 movne r3, #0
\s\smoveq\s\sr3, #1 moveq r3, #1
\s\scmp\s\sr2, #127 cmp r2, #127
\s\smovls\s\sr0, #0 movls r0, #0
\s\sandhi\s\sr0, r3, #1 andhi r0, r3, #1
L4 L4
\s\scmp\s\sr4, r1 cmp r4, r1
\s\sbcc\s\sL26 bcc L26
\s\sbls\s\sL7 bls L7
\s\srsb\s\sr3, r1, r4 rsb r3, r1, r4
\s\scmp\s\sip, r3 cmp ip, r3
\s\sbcc\s\sL26 bcc L26
\s\scmp\s\sip, #0 cmp ip, #0
\s\sbeq\s\sL7 beq L7
\s\sadd\s\sr9, r4, ip add r9, r4, ip
\s\sadd\s\slr, ip, r1 add lr, ip, r1
\s\sb\s\sL16 b L16
L29 L29
\s\ssub\s\sip, ip, #8 sub ip, ip, #8
\s\scmp\s\sip, #7 cmp ip, #7
\s\sldrd\s\sr2, [lr, #-8]! ldrd r2, [lr, #-8]!
\s\smovls\s\sr0, #0 movls r0, #0
\s\scmp\s\sip, #0 cmp ip, #0
\s\sstrd\s\sr2, [r9, #-8]! strd r2, [r9, #-8]!
\s\sbeq\s\sL7 beq L7
L16 L16
\s\scmp\s\sr0, #0 cmp r0, #0
\s\sbne\s\sL29 bne L29
\s\ssub\s\sr3, lr, #1 sub r3, lr, #1
\s\ssub\s\sip, ip, #1 sub ip, ip, #1
\s\sldrb\s\sr3, [r3, #0]\s\s ldrb r3, [r3, #0]
\s\ssub\s\sr2, r9, #1 sub r2, r9, #1
\s\scmp\s\sip, #0 cmp ip, #0
\s\ssub\s\sr9, r9, #1 sub r9, r9, #1
\s\ssub\s\slr, lr, #1 sub lr, lr, #1
\s\sstrb\s\sr3, [r2, #0] strb r3, [r2, #0]
\s\sbne\s\sL16 bne L16
\s\sb L7 b L7
L11 L11
\s\sldrb\s\sr3, [lr], #1\s\s ldrb r3, [lr], #1
\s\ssub\s\sip, ip, #1 sub ip, ip, #1
\s\sstrb\s\sr3, [r9], #1 strb r3, [r9], #1
L26 L26
\s\scmp\s\sip, #0 cmp ip, #0
\s\sbeq\s\sL7 beq L7
L30 L30
\s\scmp\s\sr0, #0 cmp r0, #0
\s\sbeq\s\sL11 beq L11
\s\ssub\s\sip, ip, #128 // 32 sub ip, ip, #128 // 32
\s\scmp\s\sip, #127 // 31 cmp ip, #127 // 31
\s\svldm lr!, {d0-d15} vldm lr!, {d0-d15}
\s\smovls\s\sr0, #0 movls r0, #0
\s\scmp\s\sip, #0 cmp ip, #0
\s\svstm r9!, {d0-d15} vstm r9!, {d0-d15}
\s\sbne\s\sL30 bne L30
L7 L7
dsb dsb
mov\s\sr0, r4 mov r0, r4
\s\sldmfd\s\ssp!, {r4, r9, pc} ldmfd sp!, {r4, r9, pc}
END END

View File

@ -34,25 +34,25 @@ InternalMemSetMem (
IN UINT8 Value IN UINT8 Value
) )
**/ **/
\s\s
.text .text
.align 2 .align 2
GCC_ASM_EXPORT(InternalMemSetMem) GCC_ASM_EXPORT(InternalMemSetMem)
ASM_PFX(InternalMemSetMem): ASM_PFX(InternalMemSetMem):
\s\sstmfd\s\ssp!, {r4-r7, lr} stmfd sp!, {r4-r7, lr}
\s\stst\s\s r0, #3 tst r0, #3
\s\smovne\s\sr3, #0 movne r3, #0
\s\smoveq\s\sr3, #1 moveq r3, #1
\s\scmp\s\s r1, #127 cmp r1, #127
\s\smovls lr, #0 movls lr, #0
\s\sandhi\s\slr, r3, #1 andhi lr, r3, #1
\s\scmp\s\s lr, #0 cmp lr, #0
\s\smov\s\s r12, r0 mov r12, r0
\s\sbne\s\s L31 bne L31
L32: L32:
\s\smov\s\s r3, #0 mov r3, #0
\s\sb\s\s L43 b L43
L31: L31:
vdup.8 q0,r2 vdup.8 q0,r2
vmov q1,q0 vmov q1,q0
@ -62,19 +62,19 @@ L31:
vmov q5,q0 vmov q5,q0
vmov q6,q0 vmov q6,q0
vmov q7,q0 vmov q7,q0
\s\sb\s\s L32 b L32
L34: L34:
\s\scmp\s\s lr, #0 cmp lr, #0
\s\sstreqb\s\sr2, [r12], #1 streqb r2, [r12], #1
\s\ssubeq\s\s r1, r1, #1 subeq r1, r1, #1
\s\sbeq\s\s L43 beq L43
\s\ssub\s\s r1, r1, #128 sub r1, r1, #128
\s\scmp\s\s r1, #127 cmp r1, #127
\s\scmp\s\s r1, #31 cmp r1, #31
\s\smovls\s\s lr, r3 movls lr, r3
\s\svstm r12!, {d0-d15} vstm r12!, {d0-d15}
L43: L43:
\s\scmp\s\s r1, #0 cmp r1, #0
\s\sbne\s\s L34 bne L34
\s\sldmfd\s\s sp!, {pc} ldmfd sp!, {pc}
\s\s

View File

@ -33,25 +33,25 @@ InternalMemSetMem (
IN UINT8 Value IN UINT8 Value
) )
**/ **/
\s\s
\s\sEXPORT InternalMemSetMem EXPORT InternalMemSetMem
\s\s
\s\sAREA AsmMemStuff, CODE, READONLY AREA AsmMemStuff, CODE, READONLY
InternalMemSetMem InternalMemSetMem
\s\sstmfd\s\ssp!, {lr} stmfd sp!, {lr}
\s\stst\s\s r0, #3 tst r0, #3
\s\smovne\s\sr3, #0 movne r3, #0
\s\smoveq\s\sr3, #1 moveq r3, #1
\s\scmp\s\s r1, #127 cmp r1, #127
\s\smovls lr, #0 movls lr, #0
\s\sandhi\s\slr, r3, #1 andhi lr, r3, #1
\s\scmp\s\s lr, #0 cmp lr, #0
\s\smov\s\s r12, r0 mov r12, r0
\s\sbne\s\s L31 bne L31
L32 L32
\s\smov\s\s r3, #0 mov r3, #0
\s\sb\s\s L43 b L43
L31 L31
vdup.8 q0,r2 vdup.8 q0,r2
vmov q1,q0 vmov q1,q0
@ -61,20 +61,20 @@ L31
vmov q5,q0 vmov q5,q0
vmov q6,q0 vmov q6,q0
vmov q7,q0 vmov q7,q0
\s\sb\s\s L32 b L32
L34 L34
\s\scmp\s\s lr, #0 cmp lr, #0
\s\sstreqb\s\sr2, [r12], #1 streqb r2, [r12], #1
\s\ssubeq\s\s r1, r1, #1 subeq r1, r1, #1
\s\sbeq\s\s L43 beq L43
\s\ssub\s\s r1, r1, #128 sub r1, r1, #128
\s\scmp\s\s r1, #127 cmp r1, #127
\s\smovls\s\s lr, r3 movls lr, r3
\s\svstm r12!, {d0-d15} vstm r12!, {d0-d15}
L43 L43
\s\scmp\s\s r1, #0 cmp r1, #0
\s\sbne\s\s L34 bne L34
\s\sldmfd\s\s sp!, {pc} ldmfd sp!, {pc}
\s\s
END END

View File

@ -34,8 +34,8 @@ EFI_STATUS BdsLoadFileFromSimpleFileSystem(
} }
//Try to Open the volume and get root directory //Try to Open the volume and get root directory
\s\sStatus = FsProtocol->OpenVolume(FsProtocol, &Fs); Status = FsProtocol->OpenVolume(FsProtocol, &Fs);
\s\sif (EFI_ERROR(Status)) { if (EFI_ERROR(Status)) {
return Status; return Status;
} }

View File

@ -12,24 +12,24 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__ashldi3) GCC_ASM_EXPORT(__ashldi3)
\s\s
ASM_PFX(__ashldi3): ASM_PFX(__ashldi3):
\s\scmp\s\sr2, #31 cmp r2, #31
\s\sbls\s\sL2 bls L2
\s\scmp\s\sr2, #63 cmp r2, #63
\s\ssubls\s\sr2, r2, #32 subls r2, r2, #32
\s\smovls\s\sr2, r0, asl r2 movls r2, r0, asl r2
\s\smovhi\s\sr2, #0 movhi r2, #0
\s\smov\s\sr1, r2 mov r1, r2
\s\smov\s\sr0, #0 mov r0, #0
\s\sbx\s\slr bx lr
L2: L2:
\s\scmp\s\sr2, #0 cmp r2, #0
\s\srsbne\s\sr3, r2, #32 rsbne r3, r2, #32
\s\smovne\s\sr3, r0, lsr r3 movne r3, r0, lsr r3
\s\smovne\s\sr0, r0, asl r2 movne r0, r0, asl r2
\s\sorrne\s\sr1, r3, r1, asl r2 orrne r1, r3, r1, asl r2
\s\sbx\s\slr bx lr

View File

@ -12,25 +12,25 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__ashrdi3) GCC_ASM_EXPORT(__ashrdi3)
ASM_PFX(__ashrdi3): ASM_PFX(__ashrdi3):
\s\scmp\s\sr2, #31 cmp r2, #31
\s\sbls\s\sL2 bls L2
\s\scmp\s\sr2, #63 cmp r2, #63
\s\ssubls\s\sr2, r2, #32 subls r2, r2, #32
\s\smov\s\sip, r1, asr #31 mov ip, r1, asr #31
\s\smovls\s\sr2, r1, asr r2 movls r2, r1, asr r2
\s\smovhi\s\sr2, ip movhi r2, ip
\s\smov\s\sr0, r2 mov r0, r2
\s\smov\s\sr1, ip mov r1, ip
\s\sbx\s\slr bx lr
L2: L2:
\s\scmp\s\sr2, #0 cmp r2, #0
\s\srsbne\s\sr3, r2, #32 rsbne r3, r2, #32
\s\smovne\s\sr3, r1, asl r3 movne r3, r1, asl r3
\s\smovne\s\sr1, r1, asr r2 movne r1, r1, asr r2
\s\sorrne\s\sr0, r3, r0, lsr r2 orrne r0, r3, r0, lsr r2
\s\sbx\s\slr bx lr

View File

@ -12,46 +12,46 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__clzsi2) GCC_ASM_EXPORT(__clzsi2)
ASM_PFX(__clzsi2): ASM_PFX(__clzsi2):
\s\s@ frame_needed = 1, uses_anonymous_args = 0 @ frame_needed = 1, uses_anonymous_args = 0
\s\sstmfd\s\ssp!, {r7, lr} stmfd sp!, {r7, lr}
\s\sadd\s\sr7, sp, #0 add r7, sp, #0
\s\smovs\s\sr3, r0, lsr #16 movs r3, r0, lsr #16
\s\smovne\s\sr3, #16 movne r3, #16
\s\smoveq\s\sr3, #0 moveq r3, #0
\s\smovne\s\sr9, #0 movne r9, #0
\s\smoveq\s\sr9, #16 moveq r9, #16
\s\smov\s\sr3, r0, lsr r3 mov r3, r0, lsr r3
\s\stst\s\sr3, #65280 tst r3, #65280
\s\smovne\s\sr0, #8 movne r0, #8
\s\smoveq\s\sr0, #0 moveq r0, #0
\s\smovne\s\slr, #0 movne lr, #0
\s\smoveq\s\slr, #8 moveq lr, #8
\s\smov\s\sr3, r3, lsr r0 mov r3, r3, lsr r0
\s\stst\s\sr3, #240 tst r3, #240
\s\smovne\s\sr0, #4 movne r0, #4
\s\smoveq\s\sr0, #0 moveq r0, #0
\s\smovne\s\sip, #0 movne ip, #0
\s\smoveq\s\sip, #4 moveq ip, #4
\s\smov\s\sr3, r3, lsr r0 mov r3, r3, lsr r0
\s\stst\s\sr3, #12 tst r3, #12
\s\smovne\s\sr0, #2 movne r0, #2
\s\smoveq\s\sr0, #0 moveq r0, #0
\s\smovne\s\sr1, #0 movne r1, #0
\s\smoveq\s\sr1, #2 moveq r1, #2
\s\smov\s\sr2, r3, lsr r0 mov r2, r3, lsr r0
\s\sadd\s\sr3, lr, r9 add r3, lr, r9
\s\sadd\s\sr0, r3, ip add r0, r3, ip
\s\sadd\s\sr1, r0, r1 add r1, r0, r1
\s\smov\s\sr0, r2, lsr #1 mov r0, r2, lsr #1
\s\seor\s\sr0, r0, #1 eor r0, r0, #1
\s\sands\s\sr0, r0, #1 ands r0, r0, #1
\s\smvnne\s\sr0, #0 mvnne r0, #0
\s\srsb\s\sr3, r2, #2 rsb r3, r2, #2
\s\sand\s\sr0, r0, r3 and r0, r0, r3
\s\sadd\s\sr0, r1, r0 add r0, r1, r0
\s\sldmfd\s\ssp!, {r7, pc} ldmfd sp!, {r7, pc}

View File

@ -12,38 +12,38 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__ctzsi2) GCC_ASM_EXPORT(__ctzsi2)
\s\s
ASM_PFX(__ctzsi2): ASM_PFX(__ctzsi2):
\s\suxth\s\sr3, r0 uxth r3, r0
\s\scmp\s\sr3, #0 cmp r3, #0
\s\smoveq\s\sip, #16 moveq ip, #16
\s\smovne\s\sip, #0 movne ip, #0
\s\s@ lr needed for prologue @ lr needed for prologue
\s\smov\s\sr0, r0, lsr ip mov r0, r0, lsr ip
\s\stst\s\sr0, #255 tst r0, #255
\s\smovne\s\sr3, #0 movne r3, #0
\s\smoveq\s\sr3, #8 moveq r3, #8
\s\smov\s\sr0, r0, lsr r3 mov r0, r0, lsr r3
\s\stst\s\sr0, #15 tst r0, #15
\s\smovne\s\sr1, #0 movne r1, #0
\s\smoveq\s\sr1, #4 moveq r1, #4
\s\sadd\s\sr3, r3, ip add r3, r3, ip
\s\smov\s\sr0, r0, lsr r1 mov r0, r0, lsr r1
\s\stst\s\sr0, #3 tst r0, #3
\s\smovne\s\sr2, #0 movne r2, #0
\s\smoveq\s\sr2, #2 moveq r2, #2
\s\sadd\s\sr3, r3, r1 add r3, r3, r1
\s\smov\s\sr0, r0, lsr r2 mov r0, r0, lsr r2
\s\sand\s\sr0, r0, #3 and r0, r0, #3
\s\sadd\s\sr2, r3, r2 add r2, r3, r2
\s\seor\s\sr3, r0, #1 eor r3, r0, #1
\s\smov\s\sr0, r0, lsr #1 mov r0, r0, lsr #1
\s\sands\s\sr3, r3, #1 ands r3, r3, #1
\s\smvnne\s\sr3, #0 mvnne r3, #0
\s\srsb\s\sr0, r0, #2 rsb r0, r0, #2
\s\sand\s\sr0, r3, r0 and r0, r3, r0
\s\sadd\s\sr0, r2, r0 add r0, r2, r0
\s\sbx\s\slr bx lr

View File

@ -12,38 +12,38 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__divdi3) GCC_ASM_EXPORT(__divdi3)
\s\s
ASM_PFX(__divdi3): ASM_PFX(__divdi3):
\s\s@ args = 0, pretend = 0, frame = 0 @ args = 0, pretend = 0, frame = 0
\s\s@ frame_needed = 1, uses_anonymous_args = 0 @ frame_needed = 1, uses_anonymous_args = 0
\s\sstmfd\s\ssp!, {r4, r5, r7, lr} stmfd sp!, {r4, r5, r7, lr}
\s\smov\s\sr4, r3, asr #31 mov r4, r3, asr #31
\s\sadd\s\sr7, sp, #8 add r7, sp, #8
\s\sstmfd\s\ssp!, {r10, r11} stmfd sp!, {r10, r11}
\s\smov\s\sr10, r1, asr #31 mov r10, r1, asr #31
\s\ssub\s\ssp, sp, #8 sub sp, sp, #8
\s\smov\s\sr11, r10 mov r11, r10
\s\smov\s\sr5, r4 mov r5, r4
\s\seor\s\sr0, r0, r10 eor r0, r0, r10
\s\seor\s\sr1, r1, r10 eor r1, r1, r10
\s\seor\s\sr2, r2, r4 eor r2, r2, r4
\s\seor\s\sr3, r3, r4 eor r3, r3, r4
\s\ssubs\s\sr2, r2, r4 subs r2, r2, r4
\s\ssbc\s\sr3, r3, r5 sbc r3, r3, r5
\s\smov\s\sip, #0 mov ip, #0
\s\ssubs\s\sr0, r0, r10 subs r0, r0, r10
\s\ssbc\s\sr1, r1, r11 sbc r1, r1, r11
\s\sstr\s\sip, [sp, #0] str ip, [sp, #0]
\s\sbl\s\sASM_PFX(__udivmoddi4) bl ASM_PFX(__udivmoddi4)
\s\seor\s\sr2, r10, r4 eor r2, r10, r4
\s\seor\s\sr3, r10, r4 eor r3, r10, r4
\s\seor\s\sr0, r0, r2 eor r0, r0, r2
\s\seor\s\sr1, r1, r3 eor r1, r1, r3
\s\ssubs\s\sr0, r0, r2 subs r0, r0, r2
\s\ssbc\s\sr1, r1, r3 sbc r1, r1, r3
\s\ssub\s\ssp, r7, #16 sub sp, r7, #16
\s\sldmfd\s\ssp!, {r10, r11} ldmfd sp!, {r10, r11}
\s\sldmfd\s\ssp!, {r4, r5, r7, pc} ldmfd sp!, {r4, r5, r7, pc}

View File

@ -12,21 +12,21 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__divsi3) GCC_ASM_EXPORT(__divsi3)
\s\s
ASM_PFX(__divsi3): ASM_PFX(__divsi3):
\s\seor\s\sr3, r0, r0, asr #31 eor r3, r0, r0, asr #31
\s\seor\s\sr2, r1, r1, asr #31 eor r2, r1, r1, asr #31
\s\sstmfd\s\ssp!, {r4, r5, r7, lr} stmfd sp!, {r4, r5, r7, lr}
\s\smov\s\sr5, r0, asr #31 mov r5, r0, asr #31
\s\sadd\s\sr7, sp, #8 add r7, sp, #8
\s\smov\s\sr4, r1, asr #31 mov r4, r1, asr #31
\s\ssub\s\sr0, r3, r0, asr #31 sub r0, r3, r0, asr #31
\s\ssub\s\sr1, r2, r1, asr #31 sub r1, r2, r1, asr #31
\s\sbl\s\sASM_PFX(__udivsi3) bl ASM_PFX(__udivsi3)
\s\seor\s\sr1, r5, r4 eor r1, r5, r4
\s\seor\s\sr0, r0, r1 eor r0, r0, r1
\s\srsb\s\sr0, r1, r0 rsb r0, r1, r0
\s\sldmfd\s\ssp!, {r4, r5, r7, pc} ldmfd sp!, {r4, r5, r7, pc}

View File

@ -13,9 +13,9 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__aeabi_ldivmod) GCC_ASM_EXPORT(__aeabi_ldivmod)
// //
// A pair of (unsigned) long longs is returned in {{r0, r1}, {r2, r3}}, // A pair of (unsigned) long longs is returned in {{r0, r1}, {r2, r3}},

View File

@ -12,24 +12,24 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__lshrdi3) GCC_ASM_EXPORT(__lshrdi3)
\s\s
ASM_PFX(__lshrdi3): ASM_PFX(__lshrdi3):
\s\scmp\s\sr2, #31 cmp r2, #31
\s\sbls\s\sL2 bls L2
\s\scmp\s\sr2, #63 cmp r2, #63
\s\ssubls\s\sr2, r2, #32 subls r2, r2, #32
\s\smovls\s\sr2, r1, lsr r2 movls r2, r1, lsr r2
\s\smovhi\s\sr2, #0 movhi r2, #0
\s\smov\s\sr0, r2 mov r0, r2
\s\smov\s\sr1, #0 mov r1, #0
\s\sbx\s\slr bx lr
L2: L2:
\s\scmp\s\sr2, #0 cmp r2, #0
\s\srsbne\s\sr3, r2, #32 rsbne r3, r2, #32
\s\smovne\s\sr3, r1, asl r3 movne r3, r1, asl r3
\s\smovne\s\sr1, r1, lsr r2 movne r1, r1, lsr r2
\s\sorrne\s\sr0, r3, r0, lsr r2 orrne r0, r3, r0, lsr r2
\s\sbx\s\slr bx lr

View File

@ -12,23 +12,23 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(memcpy) GCC_ASM_EXPORT(memcpy)
ASM_PFX(memcpy): ASM_PFX(memcpy):
\s\sstmfd\s\ssp!, {r7, lr} stmfd sp!, {r7, lr}
\s\smov\s\sip, #0 mov ip, #0
\s\sadd\s\sr7, sp, #0 add r7, sp, #0
\s\smov\s\slr, r0 mov lr, r0
\s\sb\s\sL4 b L4
L5: L5:
\s\sldrb\s\sr3, [r1], #1\s\s@ zero_extendqisi2 ldrb r3, [r1], #1 @ zero_extendqisi2
\s\sadd\s\sip, ip, #1 add ip, ip, #1
\s\sand\s\sr3, r3, #255 and r3, r3, #255
\s\sstrb\s\sr3, [lr], #1 strb r3, [lr], #1
L4: L4:
\s\scmp\s\sip, r2 cmp ip, r2
\s\sbne\s\sL5 bne L5
\s\sldmfd\s\ssp!, {r7, pc} ldmfd sp!, {r7, pc}

View File

@ -14,25 +14,25 @@
.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT (memset) GCC_ASM_EXPORT (memset)
ASM_PFX(memset): ASM_PFX(memset):
\s\s@ args = 0, pretend = 0, frame = 0 @ args = 0, pretend = 0, frame = 0
\s\s@ frame_needed = 1, uses_anonymous_args = 0 @ frame_needed = 1, uses_anonymous_args = 0
\s\sstmfd\s\ssp!, {r7, lr} stmfd sp!, {r7, lr}
\s\smov\s\sip, #0 mov ip, #0
\s\sadd\s\sr7, sp, #0 add r7, sp, #0
\s\smov\s\slr, r0 mov lr, r0
\s\sb\s\sL9 b L9
L10: L10:
\s\sand\s\sr3, r1, #255 and r3, r1, #255
\s\sadd\s\sip, ip, #1 add ip, ip, #1
\s\sstrb\s\sr3, [lr], #1 strb r3, [lr], #1
L9: L9:
\s\scmp\s\sip, r2 cmp ip, r2
\s\sbne\s\sL10 bne L10
\s\sldmfd\s\ssp!, {r7, pc} ldmfd sp!, {r7, pc}

View File

@ -12,35 +12,35 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__moddi3) GCC_ASM_EXPORT(__moddi3)
ASM_PFX(__moddi3): ASM_PFX(__moddi3):
\s\sstmfd\s\ssp!, {r4, r5, r7, lr} stmfd sp!, {r4, r5, r7, lr}
\s\smov\s\sr4, r1, asr #31 mov r4, r1, asr #31
\s\sadd\s\sr7, sp, #8 add r7, sp, #8
\s\sstmfd\s\ssp!, {r10, r11} stmfd sp!, {r10, r11}
\s\smov\s\sr10, r3, asr #31 mov r10, r3, asr #31
\s\ssub\s\ssp, sp, #16 sub sp, sp, #16
\s\smov\s\sr5, r4 mov r5, r4
\s\smov\s\sr11, r10 mov r11, r10
\s\seor\s\sr0, r0, r4 eor r0, r0, r4
\s\seor\s\sr1, r1, r4 eor r1, r1, r4
\s\seor\s\sr2, r2, r10 eor r2, r2, r10
\s\seor\s\sr3, r3, r10 eor r3, r3, r10
\s\sadd\s\sip, sp, #8 add ip, sp, #8
\s\ssubs\s\sr0, r0, r4 subs r0, r0, r4
\s\ssbc\s\sr1, r1, r5 sbc r1, r1, r5
\s\ssubs\s\sr2, r2, r10 subs r2, r2, r10
\s\ssbc\s\sr3, r3, r11 sbc r3, r3, r11
\s\sstr\s\sip, [sp, #0] str ip, [sp, #0]
\s\sbl\s\sASM_PFX(__udivmoddi4) bl ASM_PFX(__udivmoddi4)
\s\sldrd\s\sr0, [sp, #8] ldrd r0, [sp, #8]
\s\seor\s\sr0, r0, r4 eor r0, r0, r4
\s\seor\s\sr1, r1, r4 eor r1, r1, r4
\s\ssubs\s\sr0, r0, r4 subs r0, r0, r4
\s\ssbc\s\sr1, r1, r5 sbc r1, r1, r5
\s\ssub\s\ssp, r7, #16 sub sp, r7, #16
\s\sldmfd\s\ssp!, {r10, r11} ldmfd sp!, {r10, r11}
\s\sldmfd\s\ssp!, {r4, r5, r7, pc} ldmfd sp!, {r4, r5, r7, pc}

View File

@ -12,16 +12,16 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__modsi3) GCC_ASM_EXPORT(__modsi3)
ASM_PFX(__modsi3): ASM_PFX(__modsi3):
\s\sstmfd\s\ssp!, {r4, r5, r7, lr} stmfd sp!, {r4, r5, r7, lr}
\s\sadd\s\sr7, sp, #8 add r7, sp, #8
\s\smov\s\sr5, r0 mov r5, r0
\s\smov\s\sr4, r1 mov r4, r1
\s\sbl\s\s___divsi3 bl ___divsi3
\s\smul\s\sr0, r4, r0 mul r0, r4, r0
\s\srsb\s\sr0, r0, r5 rsb r0, r0, r5
\s\sldmfd\s\ssp!, {r4, r5, r7, pc} ldmfd sp!, {r4, r5, r7, pc}

View File

@ -12,47 +12,47 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__muldi3) GCC_ASM_EXPORT(__muldi3)
ASM_PFX(__muldi3): ASM_PFX(__muldi3):
\s\sstmfd\s\ssp!, {r4, r5, r6, r7, lr} stmfd sp!, {r4, r5, r6, r7, lr}
\s\sadd\s\sr7, sp, #12 add r7, sp, #12
\s\sstmfd\s\ssp!, {r8, r10, r11} stmfd sp!, {r8, r10, r11}
\s\sldr\s\sr11, L4 ldr r11, L4
\s\smov\s\sr4, r0, lsr #16 mov r4, r0, lsr #16
\s\sand\s\sr8, r0, r11 and r8, r0, r11
\s\sand\s\sip, r2, r11 and ip, r2, r11
\s\smul\s\slr, ip, r8 mul lr, ip, r8
\s\smul\s\sip, r4, ip mul ip, r4, ip
\s\ssub\s\ssp, sp, #8 sub sp, sp, #8
\s\sadd\s\sr10, ip, lr, lsr #16 add r10, ip, lr, lsr #16
\s\sand\s\sip, r10, r11 and ip, r10, r11
\s\sand\s\slr, lr, r11 and lr, lr, r11
\s\smov\s\sr6, r2, lsr #16 mov r6, r2, lsr #16
\s\sstr\s\sr4, [sp, #4] str r4, [sp, #4]
\s\sadd\s\sr4, lr, ip, asl #16 add r4, lr, ip, asl #16
\s\smul\s\sip, r8, r6 mul ip, r8, r6
\s\smov\s\sr5, r10, lsr #16 mov r5, r10, lsr #16
\s\sadd\s\sr10, ip, r4, lsr #16 add r10, ip, r4, lsr #16
\s\sand\s\sip, r10, r11 and ip, r10, r11
\s\sand\s\slr, r4, r11 and lr, r4, r11
\s\sadd\s\sr4, lr, ip, asl #16 add r4, lr, ip, asl #16
\s\smul\s\sr0, r3, r0 mul r0, r3, r0
\s\sadd\s\sip, r5, r10, lsr #16 add ip, r5, r10, lsr #16
\s\sldr\s\sr5, [sp, #4] ldr r5, [sp, #4]
\s\smla\s\sr0, r2, r1, r0 mla r0, r2, r1, r0
\s\smla\s\sr5, r6, r5, ip mla r5, r6, r5, ip
\s\smov\s\sr10, r4 mov r10, r4
\s\sadd\s\sr11, r0, r5 add r11, r0, r5
\s\smov\s\sr1, r11 mov r1, r11
\s\smov\s\sr0, r4 mov r0, r4
\s\ssub\s\ssp, r7, #24 sub sp, r7, #24
\s\sldmfd\s\ssp!, {r8, r10, r11} ldmfd sp!, {r8, r10, r11}
\s\sldmfd\s\ssp!, {r4, r5, r6, r7, pc} ldmfd sp!, {r4, r5, r6, r7, pc}
\s\s.p2align 2 .p2align 2
L5: L5:
\s\s.align 2 .align 2
L4: L4:
\s\s.long\s\s65535 .long 65535

View File

@ -13,8 +13,8 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
EXPORT\s\s__ARM_ll_mullu EXPORT __ARM_ll_mullu
EXPORT\s\s__aeabi_lmul EXPORT __aeabi_lmul
AREA Math, CODE, READONLY AREA Math, CODE, READONLY

View File

@ -14,16 +14,16 @@
EXPORT\s\s__ARM_switch8 EXPORT __ARM_switch8
AREA ArmSwitch, CODE, READONLY
AREA\s\sArmSwitch, CODE, READONLY
\s\s
__ARM_switch8 __ARM_switch8
\s\sLDRB\s\s r12,[lr,#-1] LDRB r12,[lr,#-1]
\s\sCMP\s\s\s\s r3,r12 CMP r3,r12
\s\sLDRBCC\s\sr3,[lr,r3] LDRBCC r3,[lr,r3]
\s\sLDRBCS\s\sr3,[lr,r12] LDRBCS r3,[lr,r12]
\s\sADD\s\s\s\s r12,lr,r3,LSL #1 ADD r12,lr,r3,LSL #1
\s\sBX\s\s\s\s r12 BX r12
END END

View File

@ -12,27 +12,27 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__ucmpdi2) GCC_ASM_EXPORT(__ucmpdi2)
\s\s
ASM_PFX(__ucmpdi2): ASM_PFX(__ucmpdi2):
\s\sstmfd\s\ssp!, {r4, r5, r8, lr} stmfd sp!, {r4, r5, r8, lr}
\s\scmp\s\sr1, r3 cmp r1, r3
\s\smov\s\sr8, r0 mov r8, r0
\s\smov\s\sr4, r2 mov r4, r2
\s\smov\s\sr5, r3 mov r5, r3
\s\sbcc\s\sL2 bcc L2
\s\sbhi\s\sL4 bhi L4
\s\scmp\s\sr0, r2 cmp r0, r2
\s\sbcc\s\sL2 bcc L2
\s\smovls\s\sr0, #1 movls r0, #1
\s\sbls\s\sL8 bls L8
\s\sb\s\sL4 b L4
L2: L2:
\s\smov\s\sr0, #0 mov r0, #0
\s\sb\s\sL8 b L8
L4: L4:
\s\smov\s\sr0, #2 mov r0, #2
L8: L8:
\s\sldmfd\s\ssp!, {r4, r5, r8, pc} ldmfd sp!, {r4, r5, r8, pc}

View File

@ -12,16 +12,16 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__udivdi3) GCC_ASM_EXPORT(__udivdi3)
ASM_PFX(__udivdi3): ASM_PFX(__udivdi3):
\s\sstmfd\s\ssp!, {r7, lr} stmfd sp!, {r7, lr}
\s\sadd\s\sr7, sp, #0 add r7, sp, #0
\s\ssub\s\ssp, sp, #8 sub sp, sp, #8
\s\smov\s\sip, #0 mov ip, #0
\s\sstr\s\sip, [sp, #0] str ip, [sp, #0]
\s\sbl\s\sASM_PFX(__udivmoddi4) bl ASM_PFX(__udivmoddi4)
\s\ssub\s\ssp, r7, #0 sub sp, r7, #0
\s\sldmfd\s\ssp!, {r7, pc} ldmfd sp!, {r7, pc}

View File

@ -12,231 +12,231 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__udivmoddi4) GCC_ASM_EXPORT(__udivmoddi4)
\s\s
ASM_PFX(__udivmoddi4): ASM_PFX(__udivmoddi4):
\s\sstmfd\s\ssp!, {r4, r5, r6, r7, lr} stmfd sp!, {r4, r5, r6, r7, lr}
\s\sadd\s\sr7, sp, #12 add r7, sp, #12
\s\sstmfd\s\ssp!, {r10, r11} stmfd sp!, {r10, r11}
\s\ssub\s\ssp, sp, #20 sub sp, sp, #20
\s\sstmia\s\ssp, {r2-r3} stmia sp, {r2-r3}
\s\sldr\s\sr6, [sp, #48] ldr r6, [sp, #48]
\s\sorrs\s\sr2, r2, r3 orrs r2, r2, r3
\s\smov\s\sr10, r0 mov r10, r0
\s\smov\s\sr11, r1 mov r11, r1
\s\sbeq\s\sL2 beq L2
\s\ssubs\s\sip, r1, #0 subs ip, r1, #0
\s\sbne\s\sL4 bne L4
\s\scmp\s\sr3, #0 cmp r3, #0
\s\sbne\s\sL6 bne L6
\s\scmp\s\sr6, #0 cmp r6, #0
\s\sbeq\s\sL8 beq L8
\s\smov\s\sr1, r2 mov r1, r2
\s\sbl\s\sASM_PFX(__umodsi3) bl ASM_PFX(__umodsi3)
\s\smov\s\sr1, #0 mov r1, #0
\s\sstmia\s\sr6, {r0-r1} stmia r6, {r0-r1}
L8: L8:
\s\sldr\s\sr1, [sp, #0] ldr r1, [sp, #0]
\s\smov\s\sr0, r10 mov r0, r10
\s\sb\s\sL45 b L45
L6: L6:
\s\scmp\s\sr6, #0 cmp r6, #0
\s\smovne\s\sr1, #0 movne r1, #0
\s\sstmneia\s\sr6, {r0-r1} stmneia r6, {r0-r1}
\s\sb\s\sL2 b L2
L4: L4:
\s\sldr\s\sr1, [sp, #0] ldr r1, [sp, #0]
\s\scmp\s\sr1, #0 cmp r1, #0
\s\sbne\s\sL12 bne L12
\s\sldr\s\sr2, [sp, #4] ldr r2, [sp, #4]
\s\scmp\s\sr2, #0 cmp r2, #0
\s\sbne\s\sL14 bne L14
\s\scmp\s\sr6, #0 cmp r6, #0
\s\sbeq\s\sL16 beq L16
\s\smov\s\sr1, r2 mov r1, r2
\s\smov\s\sr0, r11 mov r0, r11
\s\sbl\s\sASM_PFX(__umodsi3) bl ASM_PFX(__umodsi3)
\s\smov\s\sr1, #0 mov r1, #0
\s\sstmia\s\sr6, {r0-r1} stmia r6, {r0-r1}
L16: L16:
\s\sldr\s\sr1, [sp, #4] ldr r1, [sp, #4]
\s\smov\s\sr0, r11 mov r0, r11
L45: L45:
\s\sbl\s\sASM_PFX(__udivsi3) bl ASM_PFX(__udivsi3)
L46: L46:
\s\smov\s\sr10, r0 mov r10, r0
\s\smov\s\sr11, #0 mov r11, #0
\s\sb\s\sL10 b L10
L14: L14:
\s\ssubs\s\sr1, r0, #0 subs r1, r0, #0
\s\sbne\s\sL18 bne L18
\s\scmp\s\sr6, #0 cmp r6, #0
\s\sbeq\s\sL16 beq L16
\s\sldr\s\sr1, [sp, #4] ldr r1, [sp, #4]
\s\smov\s\sr0, r11 mov r0, r11
\s\sbl\s\sASM_PFX(__umodsi3) bl ASM_PFX(__umodsi3)
\s\smov\s\sr4, r10 mov r4, r10
\s\smov\s\sr5, r0 mov r5, r0
\s\sstmia\s\sr6, {r4-r5} stmia r6, {r4-r5}
\s\sb\s\sL16 b L16
L18: L18:
\s\ssub\s\sr3, r2, #1 sub r3, r2, #1
\s\stst\s\sr2, r3 tst r2, r3
\s\sbne\s\sL22 bne L22
\s\scmp\s\sr6, #0 cmp r6, #0
\s\smovne\s\sr4, r0 movne r4, r0
\s\sandne\s\sr5, ip, r3 andne r5, ip, r3
\s\sstmneia\s\sr6, {r4-r5} stmneia r6, {r4-r5}
L24: L24:
\s\srsb\s\sr3, r2, #0 rsb r3, r2, #0
\s\sand\s\sr3, r2, r3 and r3, r2, r3
\s\sclz\s\sr3, r3 clz r3, r3
\s\srsb\s\sr3, r3, #31 rsb r3, r3, #31
\s\smov\s\sr0, ip, lsr r3 mov r0, ip, lsr r3
\s\sb\s\sL46 b L46
L22: L22:
\s\sclz\s\sr2, r2 clz r2, r2
\s\sclz\s\sr3, ip clz r3, ip
\s\srsb\s\sr3, r3, r2 rsb r3, r3, r2
\s\scmp\s\sr3, #30 cmp r3, #30
\s\sbhi\s\sL48 bhi L48
\s\srsb\s\sr2, r3, #31 rsb r2, r3, #31
\s\sadd\s\slr, r3, #1 add lr, r3, #1
\s\smov\s\sr3, r1, asl r2 mov r3, r1, asl r2
\s\sstr\s\sr3, [sp, #12] str r3, [sp, #12]
\s\smov\s\sr3, r1, lsr lr mov r3, r1, lsr lr
\s\sldr\s\sr0, [sp, #0] ldr r0, [sp, #0]
\s\smov\s\sr5, ip, lsr lr mov r5, ip, lsr lr
\s\sorr\s\sr4, r3, ip, asl r2 orr r4, r3, ip, asl r2
\s\sstr\s\sr0, [sp, #8] str r0, [sp, #8]
\s\sb\s\sL29 b L29
L12: L12:
\s\sldr\s\sr3, [sp, #4] ldr r3, [sp, #4]
\s\scmp\s\sr3, #0 cmp r3, #0
\s\sbne\s\sL30 bne L30
\s\ssub\s\sr3, r1, #1 sub r3, r1, #1
\s\stst\s\sr1, r3 tst r1, r3
\s\sbne\s\sL32 bne L32
\s\scmp\s\sr6, #0 cmp r6, #0
\s\sandne\s\sr3, r3, r0 andne r3, r3, r0
\s\smovne\s\sr2, r3 movne r2, r3
\s\smovne\s\sr3, #0 movne r3, #0
\s\sstmneia\s\sr6, {r2-r3} stmneia r6, {r2-r3}
L34: L34:
\s\scmp\s\sr1, #1 cmp r1, #1
\s\sbeq\s\sL10 beq L10
\s\srsb\s\sr3, r1, #0 rsb r3, r1, #0
\s\sand\s\sr3, r1, r3 and r3, r1, r3
\s\sclz\s\sr3, r3 clz r3, r3
\s\srsb\s\sr0, r3, #31 rsb r0, r3, #31
\s\smov\s\sr1, ip, lsr r0 mov r1, ip, lsr r0
\s\srsb\s\sr3, r0, #32 rsb r3, r0, #32
\s\smov\s\sr0, r10, lsr r0 mov r0, r10, lsr r0
\s\sorr\s\sip, r0, ip, asl r3 orr ip, r0, ip, asl r3
\s\sstr\s\sr1, [sp, #12] str r1, [sp, #12]
\s\sstr\s\sip, [sp, #8] str ip, [sp, #8]
\s\sldrd\s\sr10, [sp, #8] ldrd r10, [sp, #8]
\s\sb\s\sL10 b L10
L32: L32:
\s\sclz\s\sr2, r1 clz r2, r1
\s\sclz\s\sr3, ip clz r3, ip
\s\srsb\s\sr3, r3, r2 rsb r3, r3, r2
\s\srsb\s\sr4, r3, #31 rsb r4, r3, #31
\s\smov\s\sr2, r0, asl r4 mov r2, r0, asl r4
\s\smvn\s\sr1, r3 mvn r1, r3
\s\sand\s\sr2, r2, r1, asr #31 and r2, r2, r1, asr #31
\s\sadd\s\slr, r3, #33 add lr, r3, #33
\s\sstr\s\sr2, [sp, #8] str r2, [sp, #8]
\s\sadd\s\sr2, r3, #1 add r2, r3, #1
\s\smov\s\sr3, r3, asr #31 mov r3, r3, asr #31
\s\sand\s\sr0, r3, r0, asl r1 and r0, r3, r0, asl r1
\s\smov\s\sr3, r10, lsr r2 mov r3, r10, lsr r2
\s\sorr\s\sr3, r3, ip, asl r4 orr r3, r3, ip, asl r4
\s\sand\s\sr3, r3, r1, asr #31 and r3, r3, r1, asr #31
\s\sorr\s\sr0, r0, r3 orr r0, r0, r3
\s\smov\s\sr3, ip, lsr lr mov r3, ip, lsr lr
\s\sstr\s\sr0, [sp, #12] str r0, [sp, #12]
\s\smov\s\sr0, r10, lsr lr mov r0, r10, lsr lr
\s\sand\s\sr5, r3, r2, asr #31 and r5, r3, r2, asr #31
\s\srsb\s\sr3, lr, #31 rsb r3, lr, #31
\s\smov\s\sr3, r3, asr #31 mov r3, r3, asr #31
\s\sorr\s\sr0, r0, ip, asl r1 orr r0, r0, ip, asl r1
\s\sand\s\sr3, r3, ip, lsr r2 and r3, r3, ip, lsr r2
\s\sand\s\sr0, r0, r2, asr #31 and r0, r0, r2, asr #31
\s\sorr\s\sr4, r3, r0 orr r4, r3, r0
\s\sb\s\sL29 b L29
L30: L30:
\s\sclz\s\sr2, r3 clz r2, r3
\s\sclz\s\sr3, ip clz r3, ip
\s\srsb\s\sr3, r3, r2 rsb r3, r3, r2
\s\scmp\s\sr3, #31 cmp r3, #31
\s\sbls\s\sL37 bls L37
L48: L48:
\s\scmp\s\sr6, #0 cmp r6, #0
\s\sstmneia\s\sr6, {r10-r11} stmneia r6, {r10-r11}
\s\sb\s\sL2 b L2
L37: L37:
\s\srsb\s\sr1, r3, #31 rsb r1, r3, #31
\s\smov\s\sr0, r0, asl r1 mov r0, r0, asl r1
\s\sadd\s\slr, r3, #1 add lr, r3, #1
\s\smov\s\sr2, #0 mov r2, #0
\s\sstr\s\sr0, [sp, #12] str r0, [sp, #12]
\s\smov\s\sr0, r10, lsr lr mov r0, r10, lsr lr
\s\sstr\s\sr2, [sp, #8] str r2, [sp, #8]
\s\ssub\s\sr2, r3, #31 sub r2, r3, #31
\s\sand\s\sr0, r0, r2, asr #31 and r0, r0, r2, asr #31
\s\smov\s\sr3, ip, lsr lr mov r3, ip, lsr lr
\s\sorr\s\sr4, r0, ip, asl r1 orr r4, r0, ip, asl r1
\s\sand\s\sr5, r3, r2, asr #31 and r5, r3, r2, asr #31
L29: L29:
\s\smov\s\sip, #0 mov ip, #0
\s\smov\s\sr10, ip mov r10, ip
\s\sb\s\sL40 b L40
L41: L41:
\s\sldr\s\sr1, [sp, #12] ldr r1, [sp, #12]
\s\sldr\s\sr2, [sp, #8] ldr r2, [sp, #8]
\s\smov\s\sr3, r4, lsr #31 mov r3, r4, lsr #31
\s\sorr\s\sr5, r3, r5, asl #1 orr r5, r3, r5, asl #1
\s\smov\s\sr3, r1, lsr #31 mov r3, r1, lsr #31
\s\sorr\s\sr4, r3, r4, asl #1 orr r4, r3, r4, asl #1
\s\smov\s\sr3, r2, lsr #31 mov r3, r2, lsr #31
\s\sorr\s\sr0, r3, r1, asl #1 orr r0, r3, r1, asl #1
\s\sorr\s\sr1, ip, r2, asl #1 orr r1, ip, r2, asl #1
\s\sldmia\s\ssp, {r2-r3} ldmia sp, {r2-r3}
\s\sstr\s\sr0, [sp, #12] str r0, [sp, #12]
\s\ssubs\s\sr2, r2, r4 subs r2, r2, r4
\s\ssbc\s\sr3, r3, r5 sbc r3, r3, r5
\s\sstr\s\sr1, [sp, #8] str r1, [sp, #8]
\s\ssubs\s\sr0, r2, #1 subs r0, r2, #1
\s\ssbc\s\sr1, r3, #0 sbc r1, r3, #0
\s\smov\s\sr2, r1, asr #31 mov r2, r1, asr #31
\s\sldmia\s\ssp, {r0-r1} ldmia sp, {r0-r1}
\s\smov\s\sr3, r2 mov r3, r2
\s\sand\s\sip, r2, #1 and ip, r2, #1
\s\sand\s\sr3, r3, r1 and r3, r3, r1
\s\sand\s\sr2, r2, r0 and r2, r2, r0
\s\ssubs\s\sr4, r4, r2 subs r4, r4, r2
\s\ssbc\s\sr5, r5, r3 sbc r5, r5, r3
\s\sadd\s\sr10, r10, #1 add r10, r10, #1
L40: L40:
\s\scmp\s\sr10, lr cmp r10, lr
\s\sbne\s\sL41 bne L41
\s\sldrd\s\sr0, [sp, #8] ldrd r0, [sp, #8]
\s\sadds\s\sr0, r0, r0 adds r0, r0, r0
\s\sadc\s\sr1, r1, r1 adc r1, r1, r1
\s\scmp\s\sr6, #0 cmp r6, #0
\s\sorr\s\sr10, r0, ip orr r10, r0, ip
\s\smov\s\sr11, r1 mov r11, r1
\s\sstmneia\s\sr6, {r4-r5} stmneia r6, {r4-r5}
\s\sb\s\sL10 b L10
L2: L2:
\s\smov\s\sr10, #0 mov r10, #0
\s\smov\s\sr11, #0 mov r11, #0
L10: L10:
\s\smov\s\sr0, r10 mov r0, r10
\s\smov\s\sr1, r11 mov r1, r11
\s\ssub\s\ssp, r7, #20 sub sp, r7, #20
\s\sldmfd\s\ssp!, {r10, r11} ldmfd sp!, {r10, r11}
\s\sldmfd\s\ssp!, {r4, r5, r6, r7, pc} ldmfd sp!, {r4, r5, r6, r7, pc}

View File

@ -12,46 +12,46 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__udivsi3) GCC_ASM_EXPORT(__udivsi3)
ASM_PFX(__udivsi3): ASM_PFX(__udivsi3):
\s\scmp\s\sr1, #0 cmp r1, #0
\s\scmpne\s\sr0, #0 cmpne r0, #0
\s\sstmfd\s\ssp!, {r4, r5, r7, lr} stmfd sp!, {r4, r5, r7, lr}
\s\sadd\s\sr7, sp, #8 add r7, sp, #8
\s\sbeq\s\sL2 beq L2
\s\sclz\s\sr2, r1 clz r2, r1
\s\sclz\s\sr3, r0 clz r3, r0
\s\srsb\s\sr3, r3, r2 rsb r3, r3, r2
\s\scmp\s\sr3, #31 cmp r3, #31
\s\sbhi\s\sL2 bhi L2
\s\sldmeqfd\s\ssp!, {r4, r5, r7, pc} ldmeqfd sp!, {r4, r5, r7, pc}
\s\sadd\s\sr5, r3, #1 add r5, r3, #1
\s\srsb\s\sr3, r3, #31 rsb r3, r3, #31
\s\smov\s\slr, #0 mov lr, #0
\s\smov\s\sr2, r0, asl r3 mov r2, r0, asl r3
\s\smov\s\sip, r0, lsr r5 mov ip, r0, lsr r5
\s\smov\s\sr4, lr mov r4, lr
\s\sb\s\sL8 b L8
L9: L9:
\s\smov\s\sr0, r2, lsr #31 mov r0, r2, lsr #31
\s\sorr\s\sip, r0, ip, asl #1 orr ip, r0, ip, asl #1
\s\sorr\s\sr2, r3, lr orr r2, r3, lr
\s\srsb\s\sr3, ip, r1 rsb r3, ip, r1
\s\ssub\s\sr3, r3, #1 sub r3, r3, #1
\s\sand\s\sr0, r1, r3, asr #31 and r0, r1, r3, asr #31
\s\smov\s\slr, r3, lsr #31 mov lr, r3, lsr #31
\s\srsb\s\sip, r0, ip rsb ip, r0, ip
\s\sadd\s\sr4, r4, #1 add r4, r4, #1
L8: L8:
\s\scmp\s\sr4, r5 cmp r4, r5
\s\smov\s\sr3, r2, asl #1 mov r3, r2, asl #1
\s\sbne\s\sL9 bne L9
\s\sorr\s\sr0, r3, lr orr r0, r3, lr
\s\sldmfd\s\ssp!, {r4, r5, r7, pc} ldmfd sp!, {r4, r5, r7, pc}
L2: L2:
\s\smov\s\sr0, #0 mov r0, #0
\s\sldmfd\s\ssp!, {r4, r5, r7, pc} ldmfd sp!, {r4, r5, r7, pc}

View File

@ -14,9 +14,9 @@
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__aeabi_uldivmod) GCC_ASM_EXPORT(__aeabi_uldivmod)
// //
//UINT64 //UINT64

View File

@ -12,18 +12,18 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__umoddi3) GCC_ASM_EXPORT(__umoddi3)
\s\s
ASM_PFX(__umoddi3): ASM_PFX(__umoddi3):
\s\sstmfd\s\ssp!, {r7, lr} stmfd sp!, {r7, lr}
\s\sadd\s\sr7, sp, #0 add r7, sp, #0
\s\ssub\s\ssp, sp, #16 sub sp, sp, #16
\s\sadd\s\sip, sp, #8 add ip, sp, #8
\s\sstr\s\sip, [sp, #0] str ip, [sp, #0]
\s\sbl\s\sASM_PFX(__udivmoddi4) bl ASM_PFX(__udivmoddi4)
\s\sldrd\s\sr0, [sp, #8] ldrd r0, [sp, #8]
\s\ssub\s\ssp, r7, #0 sub sp, r7, #0
\s\sldmfd\s\ssp!, {r7, pc} ldmfd sp!, {r7, pc}

View File

@ -12,17 +12,17 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
\s\s.text .text
\s\s.align 2 .align 2
\s\sGCC_ASM_EXPORT(__umodsi3) GCC_ASM_EXPORT(__umodsi3)
\s\s
ASM_PFX(__umodsi3): ASM_PFX(__umodsi3):
\s\sstmfd\s\ssp!, {r4, r5, r7, lr} stmfd sp!, {r4, r5, r7, lr}
\s\sadd\s\sr7, sp, #8 add r7, sp, #8
\s\smov\s\sr5, r0 mov r5, r0
\s\smov\s\sr4, r1 mov r4, r1
\s\sbl \s\sASM_PFX(__udivsi3) bl ASM_PFX(__udivsi3)
\s\smul\s\sr0, r4, r0 mul r0, r4, r0
\s\srsb\s\sr0, r0, r5 rsb r0, r0, r5
\s\sldmfd\s\ssp!, {r4, r5, r7, pc} ldmfd sp!, {r4, r5, r7, pc}

View File

@ -30,12 +30,12 @@
#define MMC_OCR_POWERUP 0x80000000 #define MMC_OCR_POWERUP 0x80000000
#define MMC_CSD_GET_CCC(Response)\s\s\s\s(Response[1] >> 20) #define MMC_CSD_GET_CCC(Response) (Response[1] >> 20)
#define MMC_CSD_GET_TRANSPEED(Response)\s\s\s\s(Response[0] & 0xFF) #define MMC_CSD_GET_TRANSPEED(Response) (Response[0] & 0xFF)
#define MMC_CSD_GET_READBLLEN(Response)\s\s\s\s((Response[1] >> 16) & 0xF) #define MMC_CSD_GET_READBLLEN(Response) ((Response[1] >> 16) & 0xF)
#define MMC_CSD_GET_WRITEBLLEN(Response)\s\s((Response[3] >> 22) & 0xF) #define MMC_CSD_GET_WRITEBLLEN(Response) ((Response[3] >> 22) & 0xF)
#define MMC_CSD_GET_FILEFORMAT(Response)\s\s((Response[3] >> 10) & 0x3) #define MMC_CSD_GET_FILEFORMAT(Response) ((Response[3] >> 10) & 0x3)
#define MMC_CSD_GET_FILEFORMATGRP(Response)\s\s((Response[3] >> 15) & 0x1) #define MMC_CSD_GET_FILEFORMATGRP(Response) ((Response[3] >> 15) & 0x1)
#define MMC_CSD_GET_DEVICESIZE(csd) (((Response[2] >> 30) & 0x3) | ((Response[1] & 0x3FF) << 2)) #define MMC_CSD_GET_DEVICESIZE(csd) (((Response[2] >> 30) & 0x3) | ((Response[1] & 0x3FF) << 2))
#define MMC_CSD_GET_DEVICESIZEMULT(csd) ((Response[2] >> 15) & 0x7) #define MMC_CSD_GET_DEVICESIZEMULT(csd) ((Response[2] >> 15) & 0x7)

View File

@ -94,20 +94,20 @@ Abstract:
typedef struct { typedef struct {
UINTN tv_sec; /* seconds */ UINTN tv_sec; /* seconds */
UINTN tv_nsec; /* and nanoseconds */ UINTN tv_nsec; /* and nanoseconds */
} EFI_timespec; } EFI_timespec;
typedef struct stat_fix { \ typedef struct stat_fix { \
dev_t st_dev; /* [XSI] ID of device containing file */ dev_t st_dev; /* [XSI] ID of device containing file */
mode_t st_mode; /* [XSI] Mode of file (see below) */ mode_t st_mode; /* [XSI] Mode of file (see below) */
nlink_t st_nlink; /* [XSI] Number of hard links */ nlink_t st_nlink; /* [XSI] Number of hard links */
__darwin_ino64_t st_ino; /* [XSI] File serial number */ __darwin_ino64_t st_ino; /* [XSI] File serial number */
uid_t st_uid; /* [XSI] User ID of the file */ uid_t st_uid; /* [XSI] User ID of the file */
gid_t st_gid; /* [XSI] Group ID of the file */ gid_t st_gid; /* [XSI] Group ID of the file */
dev_t st_rdev; /* [XSI] Device ID */ dev_t st_rdev; /* [XSI] Device ID */
// clang for X64 ABI follows Windows and a long is 32-bits // clang for X64 ABI follows Windows and a long is 32-bits
// this breaks system inlcude files so that is why we need // this breaks system inlcude files so that is why we need
@ -117,44 +117,44 @@ typedef struct stat_fix { \
EFI_timespec st_ctimespec; EFI_timespec st_ctimespec;
EFI_timespec st_birthtimespec; EFI_timespec st_birthtimespec;
off_t st_size; /* [XSI] file size, in bytes */ off_t st_size; /* [XSI] file size, in bytes */
blkcnt_t st_blocks; /* [XSI] blocks allocated for file */ blkcnt_t st_blocks; /* [XSI] blocks allocated for file */
blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */ blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */
__uint32_t st_flags; /* user defined flags for file */ __uint32_t st_flags; /* user defined flags for file */
__uint32_t st_gen; /* file generation number */ __uint32_t st_gen; /* file generation number */
__int32_t st_lspare; /* RESERVED: DO NOT USE! */ __int32_t st_lspare; /* RESERVED: DO NOT USE! */
__int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */ __int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */
} STAT_FIX; } STAT_FIX;
#else /* !__DARWIN_64_BIT_INO_T */ #else /* !__DARWIN_64_BIT_INO_T */
typedef struct stat_fix { typedef struct stat_fix {
dev_t st_dev; /* [XSI] ID of device containing file */ dev_t st_dev; /* [XSI] ID of device containing file */
ino_t st_ino; /* [XSI] File serial number */ ino_t st_ino; /* [XSI] File serial number */
mode_t st_mode; /* [XSI] Mode of file (see below) */ mode_t st_mode; /* [XSI] Mode of file (see below) */
nlink_t st_nlink; /* [XSI] Number of hard links */ nlink_t st_nlink; /* [XSI] Number of hard links */
uid_t st_uid; /* [XSI] User ID of the file */ uid_t st_uid; /* [XSI] User ID of the file */
gid_t st_gid; /* [XSI] Group ID of the file */ gid_t st_gid; /* [XSI] Group ID of the file */
dev_t st_rdev; /* [XSI] Device ID */ dev_t st_rdev; /* [XSI] Device ID */
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
struct timespec st_atimespec; /* time of last access */ struct timespec st_atimespec; /* time of last access */
struct timespec st_mtimespec; /* time of last data modification */ struct timespec st_mtimespec; /* time of last data modification */
struct timespec st_ctimespec; /* time of last status change */ struct timespec st_ctimespec; /* time of last status change */
#else #else
time_t st_atime; /* [XSI] Time of last access */ time_t st_atime; /* [XSI] Time of last access */
long st_atimensec; /* nsec of last access */ long st_atimensec; /* nsec of last access */
time_t st_mtime; /* [XSI] Last data modification time */ time_t st_mtime; /* [XSI] Last data modification time */
long st_mtimensec; /* last data modification nsec */ long st_mtimensec; /* last data modification nsec */
time_t st_ctime; /* [XSI] Time of last status change */ time_t st_ctime; /* [XSI] Time of last status change */
long st_ctimensec; /* nsec of last status change */ long st_ctimensec; /* nsec of last status change */
#endif #endif
off_t st_size; /* [XSI] file size, in bytes */ off_t st_size; /* [XSI] file size, in bytes */
blkcnt_t st_blocks; /* [XSI] blocks allocated for file */ blkcnt_t st_blocks; /* [XSI] blocks allocated for file */
blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */ blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */
__uint32_t st_flags; /* user defined flags for file */ __uint32_t st_flags; /* user defined flags for file */
__uint32_t st_gen; /* file generation number */ __uint32_t st_gen; /* file generation number */
__int32_t st_lspare; /* RESERVED: DO NOT USE! */ __int32_t st_lspare; /* RESERVED: DO NOT USE! */
__int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */ __int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */
} STAT_FIX; } STAT_FIX;
#endif #endif

View File

@ -192,7 +192,7 @@ struct _EFI_UNIX_UGA_IO_PROTOCOL;
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *UnixUgaCreate)(struct _EFI_UNIX_UGA_IO_PROTOCOL **UgaIo, (EFIAPI *UnixUgaCreate)(struct _EFI_UNIX_UGA_IO_PROTOCOL **UgaIo,
CONST CHAR16 *Title); CONST CHAR16 *Title);
typedef typedef
int int
@ -229,7 +229,7 @@ int
typedef typedef
int int
(EFIAPI *UnixTcsetattr) (int __fd, int __optional_actions, (EFIAPI *UnixTcsetattr) (int __fd, int __optional_actions,
__const struct termios *__termios_p); __const struct termios *__termios_p);
// //
@ -292,13 +292,13 @@ typedef struct _EFI_UNIX_THUNK_PROTOCOL {
UINT64 Signature; UINT64 Signature;
UnixSleep Sleep; UnixSleep Sleep;
UnixExit Exit; UnixExit Exit;
UnixSetTimer SetTimer; UnixSetTimer SetTimer;
UnixGetLocalTime GetLocalTime; UnixGetLocalTime GetLocalTime;
UnixGmTime GmTime; UnixGmTime GmTime;
UnixGetTimeZone GetTimeZone; UnixGetTimeZone GetTimeZone;
UnixGetDayLight GetDayLight; UnixGetDayLight GetDayLight;
UnixPoll Poll; UnixPoll Poll;
UnixRead Read; UnixRead Read;
UnixWrite Write; UnixWrite Write;
UnixGetenv Getenv; UnixGetenv Getenv;
@ -322,7 +322,7 @@ typedef struct _EFI_UNIX_THUNK_PROTOCOL {
UnixChmod Chmod; UnixChmod Chmod;
UnixUTime UTime; UnixUTime UTime;
UnixTcflush Tcflush; UnixTcflush Tcflush;
UnixUgaCreate UgaCreate; UnixUgaCreate UgaCreate;
UnixPerror Perror; UnixPerror Perror;
UnixIoCtl IoCtl; UnixIoCtl IoCtl;
UnixFcntl Fcntl; UnixFcntl Fcntl;

View File

@ -81,23 +81,23 @@ EFI_STATUS
typedef struct { typedef struct {
UINTN SourceX; UINTN SourceX;
UINTN SourceY; UINTN SourceY;
UINTN DestinationX; UINTN DestinationX;
UINTN DestinationY; UINTN DestinationY;
UINTN Width; UINTN Width;
UINTN Height; UINTN Height;
UINTN Delta; UINTN Delta;
} UGA_BLT_ARGS; } UGA_BLT_ARGS;
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *UGABlt)( (EFIAPI *UGABlt)(
IN EFI_UNIX_UGA_IO_PROTOCOL *Uga, IN EFI_UNIX_UGA_IO_PROTOCOL *Uga,
IN EFI_UGA_PIXEL *BltBuffer OPTIONAL, IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
IN EFI_UGA_BLT_OPERATION BltOperation, IN EFI_UGA_BLT_OPERATION BltOperation,
IN UGA_BLT_ARGS *Args IN UGA_BLT_ARGS *Args
); );
typedef typedef
BOOLEAN BOOLEAN

View File

@ -134,7 +134,7 @@ OemHookStatusCodeReport (
mStdOut, mStdOut,
Buffer, Buffer,
CharCount CharCount
); );
return EFI_SUCCESS; return EFI_SUCCESS;

View File

@ -56,7 +56,7 @@ DxeUnixPeCoffLibExtraActionConstructor (
IN EFI_SYSTEM_TABLE *SystemTable IN EFI_SYSTEM_TABLE *SystemTable
) )
{ {
EFI_HOB_GUID_TYPE *GuidHob; EFI_HOB_GUID_TYPE *GuidHob;
// //
// Retrieve UnixThunkProtocol from GUID'ed HOB // Retrieve UnixThunkProtocol from GUID'ed HOB

View File

@ -55,7 +55,7 @@ Returns:
--*/ --*/
{ {
PEI_UNIX_THUNK_PPI *UnixThunkPpi; PEI_UNIX_THUNK_PPI *UnixThunkPpi;
EFI_STATUS Status; EFI_STATUS Status;
EFI_UNIX_THUNK_PROTOCOL *Unix; EFI_UNIX_THUNK_PROTOCOL *Unix;

View File

@ -142,7 +142,7 @@ OemHookStatusCodeReport (
mStdOut, mStdOut,
Buffer, Buffer,
CharCount CharCount
); );
return EFI_SUCCESS; return EFI_SUCCESS;

View File

@ -48,7 +48,7 @@ EFIAPI
UnixPeCoffGetUnixThunkStucture ( UnixPeCoffGetUnixThunkStucture (
) )
{ {
PEI_UNIX_THUNK_PPI *UnixThunkPpi; PEI_UNIX_THUNK_PPI *UnixThunkPpi;
EFI_STATUS Status; EFI_STATUS Status;

View File

@ -398,7 +398,7 @@ GasketUgaBlt (
EFI_UNIX_UGA_IO_PROTOCOL *UgaIo, EFI_UNIX_UGA_IO_PROTOCOL *UgaIo,
IN EFI_UGA_PIXEL *BltBuffer OPTIONAL, IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
IN EFI_UGA_BLT_OPERATION BltOperation, IN EFI_UGA_BLT_OPERATION BltOperation,
IN UGA_BLT_ARGS *Args IN UGA_BLT_ARGS *Args
) )
{ {
return GasketUintnUintnUintnUintn (UgaBlt, (UINTN)UgaIo, (UINTN)BltBuffer, (UINTN)BltOperation, (UINTN)Args); return GasketUintnUintnUintnUintn (UgaBlt, (UINTN)UgaIo, (UINTN)BltBuffer, (UINTN)BltOperation, (UINTN)Args);

View File

@ -264,21 +264,21 @@ _GasketUintnUint16:
.globl _ReverseGasketUint64 .globl _ReverseGasketUint64
_ReverseGasketUint64: _ReverseGasketUint64:
pushl %ebp pushl %ebp
movl %esp, %ebp movl %esp, %ebp
subl $40, %esp subl $40, %esp
movl 12(%ebp), %eax movl 12(%ebp), %eax
movl %eax, -16(%ebp) movl %eax, -16(%ebp)
movl 16(%ebp), %eax movl 16(%ebp), %eax
movl %eax, -12(%ebp) movl %eax, -12(%ebp)
movl -16(%ebp), %eax movl -16(%ebp), %eax
movl -12(%ebp), %edx movl -12(%ebp), %edx
movl %eax, (%esp) movl %eax, (%esp)
movl %edx, 4(%esp) movl %edx, 4(%esp)
movl 8(%ebp), %eax movl 8(%ebp), %eax
call *%eax call *%eax
leave leave
ret ret
.globl _ReverseGasketUint64Uint64 .globl _ReverseGasketUint64Uint64
@ -314,31 +314,31 @@ _ReverseGasketUint64Uint64:
.globl _GasketSecUnixPeiLoadFile .globl _GasketSecUnixPeiLoadFile
_GasketSecUnixPeiLoadFile: _GasketSecUnixPeiLoadFile:
jmp _SecUnixPeiLoadFile jmp _SecUnixPeiLoadFile
.globl _GasketSecUnixPeiAutoScan .globl _GasketSecUnixPeiAutoScan
_GasketSecUnixPeiAutoScan: _GasketSecUnixPeiAutoScan:
jmp _SecUnixPeiAutoScan jmp _SecUnixPeiAutoScan
.globl _GasketSecUnixUnixThunkAddress .globl _GasketSecUnixUnixThunkAddress
_GasketSecUnixUnixThunkAddress: _GasketSecUnixUnixThunkAddress:
jmp _SecUnixUnixThunkAddress jmp _SecUnixUnixThunkAddress
.globl _GasketSecPeiReportStatusCode .globl _GasketSecPeiReportStatusCode
_GasketSecPeiReportStatusCode: _GasketSecPeiReportStatusCode:
jmp _SecPeiReportStatusCode jmp _SecPeiReportStatusCode
.globl _GasketSecUnixFdAddress .globl _GasketSecUnixFdAddress
_GasketSecUnixFdAddress: _GasketSecUnixFdAddress:
jmp _SecUnixFdAddress jmp _SecUnixFdAddress
.globl _GasketSecTemporaryRamSupport .globl _GasketSecTemporaryRamSupport
_GasketSecTemporaryRamSupport: _GasketSecTemporaryRamSupport:
jmp _SecTemporaryRamSupport jmp _SecTemporaryRamSupport
#endif #endif

View File

@ -279,17 +279,17 @@ Returns:
// Open the FD and remmeber where it got mapped into our processes address space // Open the FD and remmeber where it got mapped into our processes address space
// //
Status = MapFile ( Status = MapFile (
FileName, FileName,
&gFdInfo[Index].Address, &gFdInfo[Index].Address,
&gFdInfo[Index].Size &gFdInfo[Index].Size
); );
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
printf ("ERROR : Can not open Firmware Device File %s (%x). Exiting.\n", FileName, (unsigned int)Status); printf ("ERROR : Can not open Firmware Device File %s (%x). Exiting.\n", FileName, (unsigned int)Status);
exit (1); exit (1);
} }
printf (" FD loaded from %s at 0x%08lx", printf (" FD loaded from %s at 0x%08lx",
FileName, (unsigned long)gFdInfo[Index].Address); FileName, (unsigned long)gFdInfo[Index].Address);
if (PeiCoreFile == NULL) { if (PeiCoreFile == NULL) {
// //
@ -419,10 +419,10 @@ Returns:
/* Read entry address. */ /* Read entry address. */
lseek (fd, FileSize - 0x20, SEEK_SET); lseek (fd, FileSize - 0x20, SEEK_SET);
if (read (fd, &EntryAddress, 4) != 4) if (read (fd, &EntryAddress, 4) != 4)
{ {
close (fd); close (fd);
return EFI_DEVICE_ERROR; return EFI_DEVICE_ERROR;
} }
} }
#endif #endif
@ -664,8 +664,8 @@ Returns:
*MemoryBase = 0; *MemoryBase = 0;
res = MapMemory(0, gSystemMemory[Index].Size, res = MapMemory(0, gSystemMemory[Index].Size,
PROT_READ | PROT_WRITE | PROT_EXEC, PROT_READ | PROT_WRITE | PROT_EXEC,
MAP_PRIVATE | MAP_ANONYMOUS); MAP_PRIVATE | MAP_ANONYMOUS);
if (res == MAP_FAILED) if (res == MAP_FAILED)
return EFI_DEVICE_ERROR; return EFI_DEVICE_ERROR;
*MemorySize = gSystemMemory[Index].Size; *MemorySize = gSystemMemory[Index].Size;

View File

@ -59,7 +59,7 @@ typedef struct {
EFI_UNIX_UGA_IO_PROTOCOL UgaIo; EFI_UNIX_UGA_IO_PROTOCOL UgaIo;
Display *display; Display *display;
int screen; /* values for window_size in main */ int screen; /* values for window_size in main */
Window win; Window win;
GC gc; GC gc;
Visual *visual; Visual *visual;
@ -393,15 +393,15 @@ handleMouseMoved(UGA_IO_PRIVATE *drv, XEvent *ev)
if ( ev->xmotion.x != drv->previous_x ) if ( ev->xmotion.x != drv->previous_x )
{ {
drv->pointer_state.RelativeMovementX += ( ev->xmotion.x - drv->previous_x ); drv->pointer_state.RelativeMovementX += ( ev->xmotion.x - drv->previous_x );
drv->previous_x = ev->xmotion.x; drv->previous_x = ev->xmotion.x;
drv->pointer_state_changed = 1; drv->pointer_state_changed = 1;
} }
if ( ev->xmotion.y != drv->previous_y ) if ( ev->xmotion.y != drv->previous_y )
{ {
drv->pointer_state.RelativeMovementY += ( ev->xmotion.y - drv->previous_y ); drv->pointer_state.RelativeMovementY += ( ev->xmotion.y - drv->previous_y );
drv->previous_y = ev->xmotion.y; drv->previous_y = ev->xmotion.y;
drv->pointer_state_changed = 1; drv->pointer_state_changed = 1;
} }
drv->pointer_state.RelativeMovementZ = 0; drv->pointer_state.RelativeMovementZ = 0;
@ -413,12 +413,12 @@ handleMouseDown(UGA_IO_PRIVATE *drv, XEvent *ev, BOOLEAN Pressed)
if ( ev->xbutton.button == Button1 ) if ( ev->xbutton.button == Button1 )
{ {
drv->pointer_state_changed = ( drv->pointer_state.LeftButton != Pressed ); drv->pointer_state_changed = ( drv->pointer_state.LeftButton != Pressed );
drv->pointer_state.LeftButton = Pressed; drv->pointer_state.LeftButton = Pressed;
} }
if ( ev->xbutton.button == Button2 ) if ( ev->xbutton.button == Button2 )
{ {
drv->pointer_state_changed = ( drv->pointer_state.RightButton != Pressed ); drv->pointer_state_changed = ( drv->pointer_state.RightButton != Pressed );
drv->pointer_state.RightButton = Pressed; drv->pointer_state.RightButton = Pressed;
} }
} }
@ -460,10 +460,10 @@ HandleEvent(UGA_IO_PRIVATE *drv, XEvent *ev)
break; break;
case ButtonPress: case ButtonPress:
handleMouseDown(drv, ev, TRUE); handleMouseDown(drv, ev, TRUE);
break; break;
case ButtonRelease: case ButtonRelease:
handleMouseDown(drv, ev, FALSE); handleMouseDown(drv, ev, FALSE);
break; break;
#if 0 #if 0
case DestroyNotify: case DestroyNotify:
XCloseDisplay (drv->display); XCloseDisplay (drv->display);

File diff suppressed because it is too large Load Diff

View File

@ -39,8 +39,8 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
ASM_GLOBAL ASM_PFX(PeiSwitchStacks) ASM_GLOBAL ASM_PFX(PeiSwitchStacks)
ASM_PFX(PeiSwitchStacks): ASM_PFX(PeiSwitchStacks):
pushq %rbp // stack frame is for the debugger pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp movq %rsp, %rbp
movq %r8, %rsp movq %r8, %rsp
@ -52,7 +52,7 @@ ASM_PFX(PeiSwitchStacks):
# Reserve space for register parameters (rcx, rdx, r8 & r9) on the stack, # Reserve space for register parameters (rcx, rdx, r8 & r9) on the stack,
# in case the callee wishes to spill them. # in case the callee wishes to spill them.
# #
subq $32, %rsp // 32-byte shadow space plus alignment pad subq $32, %rsp // 32-byte shadow space plus alignment pad
call *%rax call *%rax
@ -76,8 +76,8 @@ ASM_PFX(PeiSwitchStacks):
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
ASM_GLOBAL ASM_PFX(UnixPeiSwitchStacks) ASM_GLOBAL ASM_PFX(UnixPeiSwitchStacks)
ASM_PFX(UnixPeiSwitchStacks): ASM_PFX(UnixPeiSwitchStacks):
pushq %rbp // stack frame is for the debugger pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp movq %rsp, %rbp
mov %rdi, %rax mov %rdi, %rax
mov %rsi, %rdi mov %rsi, %rdi
@ -105,7 +105,7 @@ ASM_PFX(UnixPeiSwitchStacks):
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
ASM_GLOBAL ASM_PFX(SecSwitchStack) ASM_GLOBAL ASM_PFX(SecSwitchStack)
ASM_PFX(SecSwitchStack): ASM_PFX(SecSwitchStack):
pushq %rbp // stack frame is for the debugger pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp movq %rsp, %rbp
mov %rsp, %rax mov %rsp, %rax

View File

@ -227,7 +227,7 @@ Returns:
// //
if (TimerPeriod == 0 if (TimerPeriod == 0
|| ((TimerPeriod > TIMER_MINIMUM_VALUE) || ((TimerPeriod > TIMER_MINIMUM_VALUE)
&& (TimerPeriod < TIMER_MAXIMUM_VALUE))) { && (TimerPeriod < TIMER_MAXIMUM_VALUE))) {
mTimerPeriodMs = DivU64x32 (TimerPeriod + 5000, 10000); mTimerPeriodMs = DivU64x32 (TimerPeriod + 5000, 10000);
gUnix->SetTimer (mTimerPeriodMs, TimerCallback); gUnix->SetTimer (mTimerPeriodMs, TimerCallback);

View File

@ -149,7 +149,7 @@ UnixBlockIoDriverDiagnosticsRunDiagnostics (
*ErrorType = &gEfiBlockIoProtocolGuid; *ErrorType = &gEfiBlockIoProtocolGuid;
*BufferSize = 0x60; *BufferSize = 0x60;
gBS->AllocatePool (EfiBootServicesData, (UINTN) (*BufferSize), gBS->AllocatePool (EfiBootServicesData, (UINTN) (*BufferSize),
(void *)Buffer); (void *)Buffer);
CopyMem (*Buffer, L"Unix Block I/O Driver Diagnostics Failed\n", *BufferSize); CopyMem (*Buffer, L"Unix Block I/O Driver Diagnostics Failed\n", *BufferSize);
return EFI_DEVICE_ERROR; return EFI_DEVICE_ERROR;
} }

View File

@ -410,7 +410,7 @@ Returns:
BOOLEAN WriteProtected; BOOLEAN WriteProtected;
UINTN NumberOfBlocks; UINTN NumberOfBlocks;
UINTN BlockSize; UINTN BlockSize;
INTN i; INTN i;
// //
// Grab the protocols we need // Grab the protocols we need

View File

@ -468,7 +468,7 @@ Returns:
UnixDevice->ControllerNameTable = NULL; UnixDevice->ControllerNameTable = NULL;
// FIXME: check size // FIXME: check size
StrCpy(ComponentName, UnixDevice->UnixIo.EnvString); StrCpy(ComponentName, UnixDevice->UnixIo.EnvString);
UnixDevice->DevicePath = UnixBusCreateDevicePath ( UnixDevice->DevicePath = UnixBusCreateDevicePath (

View File

@ -191,10 +191,10 @@ extern EFI_COMPONENT_NAME_PROTOCOL gUnixSerialIoComponentName;
#define __MAX_BAUD B4000000 #define __MAX_BAUD B4000000
#endif #endif
#ifndef CMSPAR #ifndef CMSPAR
#define CMSPAR 010000000000 /* mark or space (stick) parity */ #define CMSPAR 010000000000 /* mark or space (stick) parity */
#endif #endif
#ifndef FIONREAD #ifndef FIONREAD
#define FIONREAD 0x541B #define FIONREAD 0x541B
#endif #endif
// //
// Function Prototypes // Function Prototypes

View File

@ -350,9 +350,9 @@ Done:
if (Private != NULL) { if (Private != NULL) {
if (Private->VolumeLabel != NULL) if (Private->VolumeLabel != NULL)
gBS->FreePool (Private->VolumeLabel); gBS->FreePool (Private->VolumeLabel);
if (Private->FilePath != NULL) if (Private->FilePath != NULL)
gBS->FreePool (Private->FilePath); gBS->FreePool (Private->FilePath);
FreeUnicodeStringTable (Private->ControllerNameTable); FreeUnicodeStringTable (Private->ControllerNameTable);
gBS->FreePool (Private); gBS->FreePool (Private);
@ -862,7 +862,7 @@ OpenRoot:
// Create a directory // Create a directory
// //
if (NewPrivateFile->UnixThunk->MkDir (NewPrivateFile->FileName, 0777) != 0) { if (NewPrivateFile->UnixThunk->MkDir (NewPrivateFile->FileName, 0777) != 0) {
INTN LastError; INTN LastError;
LastError = PrivateFile->UnixThunk->GetErrno (); LastError = PrivateFile->UnixThunk->GetErrno ();
if (LastError != EEXIST) { if (LastError != EEXIST) {
@ -897,9 +897,9 @@ OpenRoot:
0666); 0666);
if (NewPrivateFile->fd < 0) { if (NewPrivateFile->fd < 0) {
if (PrivateFile->UnixThunk->GetErrno () == ENOENT) { if (PrivateFile->UnixThunk->GetErrno () == ENOENT) {
Status = EFI_NOT_FOUND; Status = EFI_NOT_FOUND;
} else { } else {
Status = EFI_ACCESS_DENIED; Status = EFI_ACCESS_DENIED;
} }
} }
} }
@ -1184,7 +1184,7 @@ Returns:
} }
if (PrivateFile->UnixThunk->Stat ( if (PrivateFile->UnixThunk->Stat (
FileName == NULL ? PrivateFile->FileName : FileName, FileName == NULL ? PrivateFile->FileName : FileName,
&buf) < 0) &buf) < 0)
return EFI_DEVICE_ERROR; return EFI_DEVICE_ERROR;
Status = EFI_SUCCESS; Status = EFI_SUCCESS;
@ -1285,9 +1285,9 @@ Returns:
} }
Res = PrivateFile->UnixThunk->Read ( Res = PrivateFile->UnixThunk->Read (
PrivateFile->fd, PrivateFile->fd,
Buffer, Buffer,
*BufferSize); *BufferSize);
if (Res < 0) { if (Res < 0) {
Status = EFI_DEVICE_ERROR; Status = EFI_DEVICE_ERROR;
goto Done; goto Done;
@ -1341,9 +1341,9 @@ Returns:
AsciiStrCat(FullFileName, "/"); AsciiStrCat(FullFileName, "/");
AsciiStrCat(FullFileName, PrivateFile->Dirent->d_name); AsciiStrCat(FullFileName, PrivateFile->Dirent->d_name);
Status = UnixSimpleFileSystemFileInfo (PrivateFile, Status = UnixSimpleFileSystemFileInfo (PrivateFile,
FullFileName, FullFileName,
BufferSize, BufferSize,
Buffer); Buffer);
gBS->FreePool (FullFileName); gBS->FreePool (FullFileName);
PrivateFile->Dirent = NULL; PrivateFile->Dirent = NULL;
@ -1423,9 +1423,9 @@ Returns:
} }
Res = PrivateFile->UnixThunk->Write ( Res = PrivateFile->UnixThunk->Write (
PrivateFile->fd, PrivateFile->fd,
Buffer, Buffer,
*BufferSize); *BufferSize);
if (Res == (UINTN)-1) { if (Res == (UINTN)-1) {
Status = EFI_DEVICE_ERROR; Status = EFI_DEVICE_ERROR;
goto Done; goto Done;
@ -1850,7 +1850,7 @@ Returns:
} }
Status = gBS->AllocatePool (EfiBootServicesData, OldInfoSize, Status = gBS->AllocatePool (EfiBootServicesData, OldInfoSize,
(VOID **)&OldFileInfo); (VOID **)&OldFileInfo);
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
goto Done; goto Done;

File diff suppressed because it is too large Load Diff

View File

@ -46,33 +46,33 @@ Abstract:
typedef struct typedef struct
{ {
UINT32 Signature; UINT32 Signature;
EFI_UNIX_THUNK_PROTOCOL* UnixThunk; EFI_UNIX_THUNK_PROTOCOL* UnixThunk;
EFI_HANDLE DeviceHandle; EFI_HANDLE DeviceHandle;
EFI_DEVICE_PATH_PROTOCOL* DevicePath; EFI_DEVICE_PATH_PROTOCOL* DevicePath;
EFI_MAC_ADDRESS MacAddress; EFI_MAC_ADDRESS MacAddress;
CHAR8* InterfaceName; CHAR8* InterfaceName;
INTN ReadBufferSize; INTN ReadBufferSize;
VOID* ReadBuffer; VOID* ReadBuffer;
// //
// Two walking pointers to manage the multiple packets that can be returned // Two walking pointers to manage the multiple packets that can be returned
// in a single read. // in a single read.
// //
VOID* CurrentReadPointer; VOID* CurrentReadPointer;
VOID* EndReadPointer; VOID* EndReadPointer;
INTN BpfFd; INTN BpfFd;
EFI_SIMPLE_NETWORK_PROTOCOL Snp; EFI_SIMPLE_NETWORK_PROTOCOL Snp;
EFI_SIMPLE_NETWORK_MODE Mode; EFI_SIMPLE_NETWORK_MODE Mode;
} UNIX_SNP_PRIVATE_DATA; } UNIX_SNP_PRIVATE_DATA;
#define UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS(a) \ #define UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS(a) \
CR( a, UNIX_SNP_PRIVATE_DATA, Snp, UNIX_SNP_PRIVATE_DATA_SIGNATURE ) CR( a, UNIX_SNP_PRIVATE_DATA, Snp, UNIX_SNP_PRIVATE_DATA_SIGNATURE )
extern EFI_DRIVER_BINDING_PROTOCOL gUnixSnpDriverBinding; extern EFI_DRIVER_BINDING_PROTOCOL gUnixSnpDriverBinding;
extern EFI_COMPONENT_NAME_PROTOCOL gUnixSnpDriverComponentName; extern EFI_COMPONENT_NAME_PROTOCOL gUnixSnpDriverComponentName;
@ -153,4 +153,4 @@ UnixSnpDriverBindingStop (
IN EFI_HANDLE *ChildHandleBuffer IN EFI_HANDLE *ChildHandleBuffer
); );
#endif // _UNIX_SNP_H_ #endif // _UNIX_SNP_H_