\r
EFI_STATUS\r
InitializeExceptions (\r
-\s\sIN EFI_CPU_ARCH_PROTOCOL *Cpu\r
-\s\s);\r
+ IN EFI_CPU_ARCH_PROTOCOL *Cpu\r
+ );\r
\r
EFI_STATUS\r
SyncCacheConfig (\r
// modify cacheability attributes\r
EntryMask |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_MASK;\r
if (FeaturePcdGet(PcdEfiUncachedMemoryToStronglyOrdered)) {\r
-\s\s\s\s // map to strongly ordered\r
-\s\s\s\s EntryValue |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_STRONGLY_ORDERED; // TEX[2:0] = 0, C=0, B=0\r
+ // map to strongly ordered\r
+ EntryValue |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_STRONGLY_ORDERED; // TEX[2:0] = 0, C=0, B=0\r
} else {\r
- \s\s // map to normal non-cachable\r
- \s\s EntryValue |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_NON_CACHEABLE; // TEX [2:0]= 001 = 0x2, B=0, C=0\r
+ // map to normal non-cachable\r
+ EntryValue |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_NON_CACHEABLE; // TEX [2:0]= 001 = 0x2, B=0, C=0\r
}\r
break;\r
\r
// modify cacheability attributes\r
EntryMask |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_MASK;\r
if (FeaturePcdGet(PcdEfiUncachedMemoryToStronglyOrdered)) {\r
-\s\s\s\s // map to strongly ordered\r
-\s\s\s\s EntryValue |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_STRONGLY_ORDERED; // TEX[2:0] = 0, C=0, B=0\r
+ // map to strongly ordered\r
+ EntryValue |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_STRONGLY_ORDERED; // TEX[2:0] = 0, C=0, B=0\r
} else {\r
- \s\s // map to normal non-cachable\r
- \s\s EntryValue |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_NON_CACHEABLE; // TEX [2:0]= 001 = 0x2, B=0, C=0\r
+ // map to normal non-cachable\r
+ EntryValue |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_NON_CACHEABLE; // TEX [2:0]= 001 = 0x2, B=0, C=0\r
}\r
break;\r
\r
#define DMC_DIRECT_CMD_MEMCMD_NOP (0x3 << 18)\r
#define DMC_DIRECT_CMD_MEMCMD_DPD (0x1 << 22)\r
#define DMC_DIRECT_CMD_BANKADDR(n) ((n & 0x3) << 16)\r
-#define DMC_DIRECT_CMD_CHIP_ADDR(n)\s\s\s\s((n & 0x3) << 20)\r
+#define DMC_DIRECT_CMD_CHIP_ADDR(n) ((n & 0x3) << 20)\r
\r
\r
//\r
//\r
\r
if (config->has_qos) {\r
-\s\s// CLCD AXIID = 000\r
-\s\sDmcWriteReg(DMC_ID_0_CFG_REG, DMC_ID_CFG_QOS_ENABLE | DMC_ID_CFG_QOS_MIN);\r
-\r
-\s\s// Default disable QoS\r
-\s\sDmcWriteReg(DMC_ID_1_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
-\s\sDmcWriteReg(DMC_ID_2_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
-\s\sDmcWriteReg(DMC_ID_3_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
-\s\sDmcWriteReg(DMC_ID_4_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
-\s\sDmcWriteReg(DMC_ID_5_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
-\s\sDmcWriteReg(DMC_ID_6_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
-\s\sDmcWriteReg(DMC_ID_7_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
-\s\sDmcWriteReg(DMC_ID_8_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
-\s\sDmcWriteReg(DMC_ID_9_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
-\s\sDmcWriteReg(DMC_ID_10_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
-\s\sDmcWriteReg(DMC_ID_11_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
-\s\sDmcWriteReg(DMC_ID_12_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
-\s\sDmcWriteReg(DMC_ID_13_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
-\s\sDmcWriteReg(DMC_ID_14_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
-\s\sDmcWriteReg(DMC_ID_15_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
+ // CLCD AXIID = 000\r
+ DmcWriteReg(DMC_ID_0_CFG_REG, DMC_ID_CFG_QOS_ENABLE | DMC_ID_CFG_QOS_MIN);\r
+\r
+ // Default disable QoS\r
+ DmcWriteReg(DMC_ID_1_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
+ DmcWriteReg(DMC_ID_2_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
+ DmcWriteReg(DMC_ID_3_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
+ DmcWriteReg(DMC_ID_4_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
+ DmcWriteReg(DMC_ID_5_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
+ DmcWriteReg(DMC_ID_6_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
+ DmcWriteReg(DMC_ID_7_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
+ DmcWriteReg(DMC_ID_8_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
+ DmcWriteReg(DMC_ID_9_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
+ DmcWriteReg(DMC_ID_10_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
+ DmcWriteReg(DMC_ID_11_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
+ DmcWriteReg(DMC_ID_12_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
+ DmcWriteReg(DMC_ID_13_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
+ DmcWriteReg(DMC_ID_14_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
+ DmcWriteReg(DMC_ID_15_CFG_REG, DMC_ID_CFG_QOS_DISABLE);\r
}\r
\r
//\r
// |======================================\r
DmcWriteReg(DMC_MEMORY_CFG3_REG, config->memory_cfg3);\r
\r
-\s\s// |========================================================\r
-\s\s// |Set Test Chip PHY Registers via PL341 User Config Reg\r
-\s\s// |Note that user_cfgX registers are Write Only\r
-\s\s// |\r
-\s\s// |DLL Freq set = 250MHz - 266MHz\r
-\s\s// |======================================================== \r
-\s\sDmcWriteReg(DMC_USER_0_CFG_REG, 0x7C924924);\r
+ // |========================================================\r
+ // |Set Test Chip PHY Registers via PL341 User Config Reg\r
+ // |Note that user_cfgX registers are Write Only\r
+ // |\r
+ // |DLL Freq set = 250MHz - 266MHz\r
+ // |======================================================== \r
+ DmcWriteReg(DMC_USER_0_CFG_REG, 0x7C924924);\r
\r
-\s\s// user_config2\r
-\s\s// ------------\r
-\s\s// Set defaults before calibrating the DDR2 buffer impendence\r
-\s\s// -Disable ODT\r
-\s\s// -Default drive strengths\r
-\s\sDmcWriteReg(DMC_USER_2_CFG_REG, 0x40000198);\r
+ // user_config2\r
+ // ------------\r
+ // Set defaults before calibrating the DDR2 buffer impendence\r
+ // -Disable ODT\r
+ // -Default drive strengths\r
+ DmcWriteReg(DMC_USER_2_CFG_REG, 0x40000198);\r
\r
-\s\s// |=======================================================\r
-\s\s// |Auto calibrate the DDR2 buffers impendence \r
-\s\s// |=======================================================\r
-\s\sval32 = DmcReadReg(DMC_USER_STATUS_REG);\r
-\s\swhile (!(val32 & 0x100)) {\r
-\s\s val32 = DmcReadReg(DMC_USER_STATUS_REG);\r
-\s\s}\r
-\r
-\s\s// Set the output driven strength\r
-\s\sDmcWriteReg(DMC_USER_2_CFG_REG, 0x40800000 | \r
-\s\s\s\s (TC_UIOLHXC_VALUE << TC_UIOLHNC_SHIFT) | \r
-\s\s\s\s (TC_UIOLHXC_VALUE << TC_UIOLHPC_SHIFT) |\r
-\s\s\s\s (0x1 << TC_UIOHOCT_SHIFT) | \r
-\s\s\s\s (0x1 << TC_UIOHSTOP_SHIFT));\r
-\r
-\s\s// |======================================\r
-\s\s// | Set PL341 Feature Control Register \r
-\s\s// |======================================\r
-\s\s// | Disable early BRESP - use to optimise CLCD performance\r
-\s\sDmcWriteReg(DMC_FEATURE_CRTL_REG, 0x00000001);\r
+ // |=======================================================\r
+ // |Auto calibrate the DDR2 buffers impendence \r
+ // |=======================================================\r
+ val32 = DmcReadReg(DMC_USER_STATUS_REG);\r
+ while (!(val32 & 0x100)) {\r
+ val32 = DmcReadReg(DMC_USER_STATUS_REG);\r
+ }\r
+\r
+ // Set the output driven strength\r
+ DmcWriteReg(DMC_USER_2_CFG_REG, 0x40800000 | \r
+ (TC_UIOLHXC_VALUE << TC_UIOLHNC_SHIFT) | \r
+ (TC_UIOLHXC_VALUE << TC_UIOLHPC_SHIFT) |\r
+ (0x1 << TC_UIOHOCT_SHIFT) | \r
+ (0x1 << TC_UIOHSTOP_SHIFT));\r
+\r
+ // |======================================\r
+ // | Set PL341 Feature Control Register \r
+ // |======================================\r
+ // | Disable early BRESP - use to optimise CLCD performance\r
+ DmcWriteReg(DMC_FEATURE_CRTL_REG, 0x00000001);\r
\r
//=================\r
// Config memories\r
//=================\r
\r
for (chip = 0; chip <= config-> max_chip; chip++) {\r
-\s\s// send nop\r
-\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_NOP);\r
-\s\s// pre-charge all\r
-\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_PRECHARGEALL);\r
-\r
-\s\s// delay\r
-\s\sfor (i = 0; i < 10; i++) {\r
-\s\s val32 = DmcReadReg(DMC_STATUS_REG);\r
-\s\s}\r
-\r
-\s\s// set (EMR2) extended mode register 2\r
-\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, \r
-\s\s\s\s DMC_DIRECT_CMD_CHIP_ADDR(chip) | \r
-\s\s\s\s DMC_DIRECT_CMD_BANKADDR(2) | \r
-\s\s\s\s DMC_DIRECT_CMD_MEMCMD_EXTMODEREG);\r
-\s\s// set (EMR3) extended mode register 3\r
-\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, \r
-\s\s\s\s DMC_DIRECT_CMD_CHIP_ADDR(chip) | \r
-\s\s\s\s DMC_DIRECT_CMD_BANKADDR(3) | \r
-\s\s\s\s DMC_DIRECT_CMD_MEMCMD_EXTMODEREG);\r
-\r
-\s\s// =================================\r
-\s\s// set (EMR) Extended Mode Register\r
-\s\s// ==================================\r
-\s\s// Put into OCD default state\r
-\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, \r
-\s\s\s\s DMC_DIRECT_CMD_CHIP_ADDR(chip) | \r
-\s\s\s\s DMC_DIRECT_CMD_BANKADDR(1) | \r
-\s\s\s\s DMC_DIRECT_CMD_MEMCMD_EXTMODEREG);\r
-\r
-\s\s// =========================================================== \r
-\s\s// set (MR) mode register - With DLL reset\r
-\s\s// ===========================================================\r
-\s\s// Burst Length = 4 (010)\r
-\s\s// Burst Type = Seq (0)\r
-\s\s// Latency = 4 (100)\r
-\s\s// Test mode = Off (0)\r
-\s\s// DLL reset = Yes (1)\r
-\s\s// Wr Recovery = 4 (011) \r
-\s\s// PD = Normal (0)\r
+ // send nop\r
+ DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_NOP);\r
+ // pre-charge all\r
+ DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_PRECHARGEALL);\r
+\r
+ // delay\r
+ for (i = 0; i < 10; i++) {\r
+ val32 = DmcReadReg(DMC_STATUS_REG);\r
+ }\r
+\r
+ // set (EMR2) extended mode register 2\r
+ DmcWriteReg(DMC_DIRECT_CMD_REG, \r
+ DMC_DIRECT_CMD_CHIP_ADDR(chip) | \r
+ DMC_DIRECT_CMD_BANKADDR(2) | \r
+ DMC_DIRECT_CMD_MEMCMD_EXTMODEREG);\r
+ // set (EMR3) extended mode register 3\r
+ DmcWriteReg(DMC_DIRECT_CMD_REG, \r
+ DMC_DIRECT_CMD_CHIP_ADDR(chip) | \r
+ DMC_DIRECT_CMD_BANKADDR(3) | \r
+ DMC_DIRECT_CMD_MEMCMD_EXTMODEREG);\r
+\r
+ // =================================\r
+ // set (EMR) Extended Mode Register\r
+ // ==================================\r
+ // Put into OCD default state\r
+ DmcWriteReg(DMC_DIRECT_CMD_REG, \r
+ DMC_DIRECT_CMD_CHIP_ADDR(chip) | \r
+ DMC_DIRECT_CMD_BANKADDR(1) | \r
+ DMC_DIRECT_CMD_MEMCMD_EXTMODEREG);\r
+\r
+ // =========================================================== \r
+ // set (MR) mode register - With DLL reset\r
+ // ===========================================================\r
+ // Burst Length = 4 (010)\r
+ // Burst Type = Seq (0)\r
+ // Latency = 4 (100)\r
+ // Test mode = Off (0)\r
+ // DLL reset = Yes (1)\r
+ // Wr Recovery = 4 (011) \r
+ // PD = Normal (0)\r
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00080742);\r
\r
-\s\s// pre-charge all \r
-\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_PRECHARGEALL);\r
-\s\s// auto-refresh \r
-\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH);\r
-\s\s// auto-refresh \r
-\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH);\r
-\r
-\s\s// delay\r
-\s\sfor (i = 0; i < 10; i++) {\r
-\s\s val32 = DmcReadReg(DMC_STATUS_REG);\r
-\s\s}\r
-\r
-\s\s// =========================================================== \r
-\s\s// set (MR) mode register - Without DLL reset\r
-\s\s// ===========================================================\r
+ // pre-charge all \r
+ DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_PRECHARGEALL);\r
+ // auto-refresh \r
+ DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH);\r
+ // auto-refresh \r
+ DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH);\r
+\r
+ // delay\r
+ for (i = 0; i < 10; i++) {\r
+ val32 = DmcReadReg(DMC_STATUS_REG);\r
+ }\r
+\r
+ // =========================================================== \r
+ // set (MR) mode register - Without DLL reset\r
+ // ===========================================================\r
// auto-refresh\r
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH);\r
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00080642);\r
val32 = DmcReadReg(DMC_STATUS_REG);\r
}\r
\r
-\s\s// ====================================================== \r
-\s\s// set (EMR) extended mode register - Enable OCD defaults\r
-\s\s// ====================================================== \r
-\s\sval32 = 0; //NOP\r
-\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00090000 |\r
-\s\s\s\s (DDR_EMR_OCD_DEFAULT << DDR_EMR_OCD_SHIFT) | \r
-\s\s\s\s DDR_EMR_RTT_75R | \r
-\s\s\s\s (DDR_EMR_ODS_VAL << DDR_EMR_ODS_MASK));\r
-\r
-\s\s// delay\r
-\s\sfor (i = 0; i < 10; i++) {\r
-\s\s val32 = DmcReadReg(DMC_STATUS_REG);\r
-\s\s}\r
-\r
-\s\s// Set (EMR) extended mode register - OCD Exit\r
-\s\sval32 = 0; //NOP\r
-\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00090000 | \r
-\s\s\s\s (DDR_EMR_OCD_NS << DDR_EMR_OCD_SHIFT) | \r
-\s\s\s\s DDR_EMR_RTT_75R |\r
-\s\s\s\s (DDR_EMR_ODS_VAL << DDR_EMR_ODS_MASK));\r
+ // ====================================================== \r
+ // set (EMR) extended mode register - Enable OCD defaults\r
+ // ====================================================== \r
+ val32 = 0; //NOP\r
+ DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00090000 |\r
+ (DDR_EMR_OCD_DEFAULT << DDR_EMR_OCD_SHIFT) | \r
+ DDR_EMR_RTT_75R | \r
+ (DDR_EMR_ODS_VAL << DDR_EMR_ODS_MASK));\r
+\r
+ // delay\r
+ for (i = 0; i < 10; i++) {\r
+ val32 = DmcReadReg(DMC_STATUS_REG);\r
+ }\r
+\r
+ // Set (EMR) extended mode register - OCD Exit\r
+ val32 = 0; //NOP\r
+ DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00090000 | \r
+ (DDR_EMR_OCD_NS << DDR_EMR_OCD_SHIFT) | \r
+ DDR_EMR_RTT_75R |\r
+ (DDR_EMR_ODS_VAL << DDR_EMR_ODS_MASK));\r
\r
}\r
\r
PL390GicEnableInterruptInterface (\r
IN INTN GicInterruptInterfaceBase\r
)\r
-{\s\s\r
-\s\s/*\r
-\s\s * Enable the CPU interface in Non-Secure world\r
-\s\s * Note: The ICCICR register is banked when Security extensions are implemented\s\s \r
-\s\s */\r
+{ \r
+ /*\r
+ * Enable the CPU interface in Non-Secure world\r
+ * Note: The ICCICR register is banked when Security extensions are implemented \r
+ */\r
MmioWrite32(GicInterruptInterfaceBase + GIC_ICCICR,0x00000001);\r
}\r
\r
IN INTN CPUTargetList\r
)\r
{\r
-\s\sMmioWrite32(GicDistributorBase + GIC_ICDSGIR, ((TargetListFilter & 0x3) << 24) | ((CPUTargetList & 0xFF) << 16));\r
+ MmioWrite32(GicDistributorBase + GIC_ICDSGIR, ((TargetListFilter & 0x3) << 24) | ((CPUTargetList & 0xFF) << 16));\r
}\r
\r
UINT32\r
InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);\r
\r
//Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID\r
-\s\sif (((CoreId & 0x7) << 10) == (InterruptId & 0x1C00)) {\r
-\s\s //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR\r
-\s\s\s\sMmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);\r
+ if (((CoreId & 0x7) << 10) == (InterruptId & 0x1C00)) {\r
+ //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR\r
+ MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);\r
return 1;\r
} else {\r
return 0;\r
InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);\r
\r
//Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID\r
-\s\sif((((CoreId & 0x7) << 10) | (SgiId & 0x3FF)) == (InterruptId & 0x1FFF)) {\r
-\s\s //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR\r
-\s\s\s\sMmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);\r
+ if((((CoreId & 0x7) << 10) | (SgiId & 0x3FF)) == (InterruptId & 0x1FFF)) {\r
+ //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR\r
+ MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);\r
return 1;\r
} else {\r
return 0;\r
//Check if there are any pending interrupts\r
while(0 != (MmioRead32(GicDistributorBase + GIC_ICDICPR) & 0xF))\r
{\r
-\s\s //Some of the SGI's are still pending, read Ack register and send End of Interrupt Signal\r
-\s\s UINTN InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);\r
+ //Some of the SGI's are still pending, read Ack register and send End of Interrupt Signal\r
+ UINTN InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);\r
\r
-\s\s //Write to End of interrupt signal\r
-\s\s MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);\r
+ //Write to End of interrupt signal\r
+ MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);\r
}\r
\r
// Ensure all GIC interrupts are Non-Secure\r
IN INTN GicInterruptInterfaceBase\r
)\r
{\r
-\s\sMmioWrite32(GicInterruptInterfaceBase + GIC_ICCPMR, 0x000000FF); /* Set Priority Mask to allow interrupts */\r
+ MmioWrite32(GicInterruptInterfaceBase + GIC_ICCPMR, 0x000000FF); /* Set Priority Mask to allow interrupts */\r
\r
-\s\s/*\r
-\s\s * Enable CPU interface in Secure world\r
+ /*\r
+ * Enable CPU interface in Secure world\r
* Enable CPU inteface in Non-secure World\r
-\s\s * Signal Secure Interrupts to CPU using FIQ line *\r
-\s\s */\r
+ * Signal Secure Interrupts to CPU using FIQ line *\r
+ */\r
MmioWrite32(GicInterruptInterfaceBase + GIC_ICCICR,\r
- \s\s\s\sGIC_ICCICR_ENABLE_SECURE(1) |\r
- \s\s\s\sGIC_ICCICR_ENABLE_NS(1) |\r
- \s\s\s\sGIC_ICCICR_ACK_CTL(0) |\r
- \s\s\s\sGIC_ICCICR_SIGNAL_SECURE_TO_FIQ(1) |\r
- \s\s\s\sGIC_ICCICR_USE_SBPR(0));\r
+ GIC_ICCICR_ENABLE_SECURE(1) |\r
+ GIC_ICCICR_ENABLE_NS(1) |\r
+ GIC_ICCICR_ACK_CTL(0) |\r
+ GIC_ICCICR_SIGNAL_SECURE_TO_FIQ(1) |\r
+ GIC_ICCICR_USE_SBPR(0));\r
}\r
\r
VOID\r
IN INTN CPUTargetList\r
)\r
{\r
-\s\sMmioWrite32(GicDistributorBase + GIC_ICDSGIR, ((TargetListFilter & 0x3) << 24) | ((CPUTargetList & 0xFF) << 16));\r
+ MmioWrite32(GicDistributorBase + GIC_ICDSGIR, ((TargetListFilter & 0x3) << 24) | ((CPUTargetList & 0xFF) << 16));\r
}\r
\r
UINT32\r
InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);\r
\r
//Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID\r
-\s\sif (((CoreId & 0x7) << 10) == (InterruptId & 0x1C00)) {\r
-\s\s //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR\r
-\s\s\s\sMmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);\r
+ if (((CoreId & 0x7) << 10) == (InterruptId & 0x1C00)) {\r
+ //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR\r
+ MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);\r
return 1;\r
} else {\r
return 0;\r
InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);\r
\r
//Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID\r
-\s\sif((((CoreId & 0x7) << 10) | (SgiId & 0x3FF)) == (InterruptId & 0x1FFF)) {\r
-\s\s //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR\r
-\s\s\s\sMmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);\r
+ if((((CoreId & 0x7) << 10) | (SgiId & 0x3FF)) == (InterruptId & 0x1FFF)) {\r
+ //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR\r
+ MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);\r
return 1;\r
} else {\r
return 0;\r
struct pl341_dmc_config {
- UINTN\s\sbase; // base address for the controller
- UINTN\s\shas_qos; // has QoS registers
- UINTN\s\smax_chip; // number of memory chips accessible
- UINT32\s\srefresh_prd;
- UINT32\s\scas_latency;
- UINT32\s\swrite_latency;
- UINT32\s\st_mrd;
- UINT32\s\st_ras;
- UINT32\s\st_rc;
- UINT32\s\st_rcd;
- UINT32\s\st_rfc;
- UINT32\s\st_rp;
- UINT32\s\st_rrd;
- UINT32\s\st_wr;
- UINT32\s\st_wtr;
- UINT32\s\st_xp;
- UINT32\s\st_xsr;
- UINT32\s\st_esr;
- UINT32\s\smemory_cfg;
- UINT32\s\smemory_cfg2;
- UINT32\s\smemory_cfg3;
- UINT32\s\schip_cfg0;
- UINT32\s\schip_cfg1;
- UINT32\s\schip_cfg2;
- UINT32\s\schip_cfg3;
- UINT32\s\st_faw;
+ UINTN base; // base address for the controller
+ UINTN has_qos; // has QoS registers
+ UINTN max_chip; // number of memory chips accessible
+ UINT32 refresh_prd;
+ UINT32 cas_latency;
+ UINT32 write_latency;
+ UINT32 t_mrd;
+ UINT32 t_ras;
+ UINT32 t_rc;
+ UINT32 t_rcd;
+ UINT32 t_rfc;
+ UINT32 t_rp;
+ UINT32 t_rrd;
+ UINT32 t_wr;
+ UINT32 t_wtr;
+ UINT32 t_xp;
+ UINT32 t_xsr;
+ UINT32 t_esr;
+ UINT32 memory_cfg;
+ UINT32 memory_cfg2;
+ UINT32 memory_cfg3;
+ UINT32 chip_cfg0;
+ UINT32 chip_cfg1;
+ UINT32 chip_cfg2;
+ UINT32 chip_cfg3;
+ UINT32 t_faw;
};
/* Memory config bit fields */
#define DMC_MEMORY_CONFIG_BURST_4 (0x2 << 15)
#define DMC_MEMORY_CONFIG_BURST_8 (0x3 << 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_2\s\s\s\s(0x1 << 21)
-#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_3\s\s\s\s(0x2 << 21)
-#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_4\s\s\s\s(0x3 << 21)
+#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_1 (0x0 << 21)
+#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_2 (0x1 << 21)
+#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_3 (0x2 << 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_SYNC\s\s\s\s(0x1 << 0)
-#define DMC_MEMORY_CFG2_DQM_INIT\s\s\s\s(0x1 << 2)
-#define DMC_MEMORY_CFG2_CKE_INIT\s\s\s\s(0x1 << 3)
-#define DMC_MEMORY_CFG2_BANK_BITS_2\s\s\s\s(0x0 << 4)
-#define DMC_MEMORY_CFG2_BANK_BITS_3\s\s\s\s(0x3 << 4)
-#define DMC_MEMORY_CFG2_MEM_WIDTH_16\s\s\s\s(0x0 << 6)
-#define DMC_MEMORY_CFG2_MEM_WIDTH_32\s\s\s\s(0x1 << 6)
-#define DMC_MEMORY_CFG2_MEM_WIDTH_64\s\s\s\s(0x2 << 6)
-#define DMC_MEMORY_CFG2_MEM_WIDTH_RESERVED\s\s(0x3 << 6)
+#define DMC_MEMORY_CFG2_CLK_ASYNC (0x0 << 0)
+#define DMC_MEMORY_CFG2_CLK_SYNC (0x1 << 0)
+#define DMC_MEMORY_CFG2_DQM_INIT (0x1 << 2)
+#define DMC_MEMORY_CFG2_CKE_INIT (0x1 << 3)
+#define DMC_MEMORY_CFG2_BANK_BITS_2 (0x0 << 4)
+#define DMC_MEMORY_CFG2_BANK_BITS_3 (0x3 << 4)
+#define DMC_MEMORY_CFG2_MEM_WIDTH_16 (0x0 << 6)
+#define DMC_MEMORY_CFG2_MEM_WIDTH_32 (0x1 << 6)
+#define DMC_MEMORY_CFG2_MEM_WIDTH_64 (0x2 << 6)
+#define DMC_MEMORY_CFG2_MEM_WIDTH_RESERVED (0x3 << 6)
#define L230_TAG_LATENCY 0x108\r
#define L230_DATA_LATENCY 0x10C\r
#define L2X0_INTCLEAR 0x220\r
-#define L2X0_CACHE_SYNC\s\s\s\s\s\s0x730\r
+#define L2X0_CACHE_SYNC 0x730\r
#define L2X0_INVWAY 0x77C\r
#define L2X0_CLEAN_WAY 0x7BC\r
#define L2X0_PFCTRL 0xF60\r
\r
extern EFI_GUID gVirtualUncachedPagesProtocolGuid;\r
\r
-#endif\s\s\r
+#endif \r
orr r0,r0,r1 @Set I bit
mcr p15,0,r0,c1,c0,0 @Write control register configuration data
bx LR
-\s\s
+
ASM_PFX(ArmDisableInstructionCache):
ldr r1,=IC_ON
mrc p15,0,r0,c1,c0,0 @Read control register configuration data
bic r0,r0,r1 @Clear I bit.
mcr p15,0,r0,c1,c0,0 @Write control register configuration data
bx LR
-\s\s
+
ASM_PFX(ArmInvalidateInstructionCache):
mov r0,#0
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
mcr p15,0,r0,c7,c10,4 @Data write buffer
bx LR
orr R0,R0,R1 @Set C bit
mcr p15,0,r0,c1,c0,0 @Write control register configuration data
bx LR
-\s\s
+
ASM_PFX(ArmDisableDataCache):
ldr R1,=DC_ON
mrc p15,0,R0,c1,c0,0 @Read control register configuration data
mrc p15,0,r15,c7,c10,3
bne ASM_PFX(ArmCleanDataCache)
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
ASM_PFX(ArmInvalidateDataCache):
mrc p15,0,r15,c7,c14,3
bne ASM_PFX(ArmCleanInvalidateDataCache)
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
ASM_PFX(ArmEnableBranchPrediction):
MRC p15,0,r15,c7,c10,3
BNE ArmCleanDataCache
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
ArmInvalidateDataCache
MRC p15,0,r15,c7,c14,3
BNE ArmCleanInvalidateDataCache
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
ArmEnableBranchPrediction
ArmEnableIrq
cpsie i
isb
-\s\sbx LR
+ bx LR
ArmDisableIrq
cpsid i
isb
-\s\sbx LR
+ bx LR
ArmEnableFiq
cpsie f
isb
-\s\sbx LR
+ bx LR
ArmDisableFiq
cpsid f
ArmGetInterruptState
mrs R0,CPSR
- tst R0,#0x80\s\s ;Check if IRQ is enabled.
+ tst R0,#0x80 ;Check if IRQ is enabled.
moveq R0,#1
movne R0,#0
-\s\sbx LR
+ bx LR
ArmGetFiqState
-\s\smrs R0,CPSR
-\s\stst R0,#0x40\s\s ;Check if FIQ is enabled.
-\s\smoveq R0,#1
-\s\smovne R0,#0
-\s\sbx LR
+ mrs R0,CPSR
+ tst R0,#0x40 ;Check if FIQ is enabled.
+ moveq R0,#1
+ movne R0,#0
+ bx LR
ArmInvalidateTlb
mov r0,#0
ArmGetTTBR0BaseAddress
mrc p15,0,r0,c2,c0,0
- ldr\s\s r1, = 0xFFFFC000
+ ldr r1, = 0xFFFFC000
and r0, r0, r1
isb
bx lr
# the Configuration BAR as a stack is not necessary setup. The SCU is at the\r
# offset 0x0000 from the Private Memory Region.\r
mrc p15, 4, r0, c15, c0, 0\r
- bx\s\slr\r
+ bx lr\r
\r
# IN None\r
# OUT r1 = SCU enabled (boolean)\r
// the Configuration BAR as a stack is not necessary setup. The SCU is at the\r
// offset 0x0000 from the Private Memory Region.\r
mrc p15, 4, r0, c15, c0, 0\r
- bx\s\slr\r
+ bx lr\r
\r
// IN None\r
// OUT r1 = SCU enabled (boolean)\r
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
isb
bx lr
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
isb
bx lr
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
isb
bx lr
bic R0,R0,#1
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
dsb
isb
//Note: Return 0 in Uniprocessor implementation
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
ASM_PFX(ArmInvalidateInstructionAndDataTlb):
bx lr
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
ASM_FUNCTION_REMOVE_IF_UNREFERENCED
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
isb
bx lr
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
isb
bx lr
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
isb
bx lr
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 \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
dsb
isb
//Note: Return 0 in Uniprocessor implementation
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
ArmInvalidateInstructionAndDataTlb
bx lr
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
END
bx LR
ASM_PFX(ArmEnableInterrupts):
-\s\smrs R0,CPSR
-\s\sbic R0,R0,#0x80\s\s\s\s@Enable IRQ interrupts
-\s\smsr CPSR_c,R0
-\s\sbx LR
+ mrs R0,CPSR
+ bic R0,R0,#0x80 @Enable IRQ interrupts
+ msr CPSR_c,R0
+ bx LR
ASM_PFX(ArmDisableInterrupts):
-\s\smrs R0,CPSR
-\s\sorr R1,R0,#0x80\s\s\s\s@Disable IRQ interrupts
-\s\smsr CPSR_c,R1
+ mrs R0,CPSR
+ orr R1,R0,#0x80 @Disable IRQ interrupts
+ msr CPSR_c,R1
tst R0,#0x80
moveq R0,#1
movne R0,#0
-\s\sbx LR
+ bx LR
ASM_PFX(ArmGetInterruptState):
-\s\smrs R0,CPSR
-\s\stst R0,#0x80\s\s @Check if IRQ is enabled.
-\s\smoveq R0,#1
-\s\smovne R0,#0
-\s\sbx LR
+ mrs R0,CPSR
+ tst R0,#0x80 @Check if IRQ is enabled.
+ moveq R0,#1
+ movne R0,#0
+ bx LR
ASM_PFX(ArmEnableFiq):
-\s\smrs R0,CPSR
-\s\sbic R0,R0,#0x40\s\s\s\s@Enable FIQ interrupts
-\s\smsr CPSR_c,R0
-\s\sbx LR
+ mrs R0,CPSR
+ bic R0,R0,#0x40 @Enable FIQ interrupts
+ msr CPSR_c,R0
+ bx LR
ASM_PFX(ArmDisableFiq):
-\s\smrs R0,CPSR
-\s\sorr R1,R0,#0x40\s\s\s\s@Disable FIQ interrupts
-\s\smsr CPSR_c,R1
+ mrs R0,CPSR
+ orr R1,R0,#0x40 @Disable FIQ interrupts
+ msr CPSR_c,R1
tst R0,#0x80
moveq R0,#1
movne R0,#0
-\s\sbx LR
+ bx LR
ASM_PFX(ArmGetFiqState):
-\s\smrs R0,CPSR
-\s\stst R0,#0x80\s\s @Check if FIQ is enabled.
-\s\smoveq R0,#1
-\s\smovne R0,#0
-\s\sbx LR
+ mrs R0,CPSR
+ tst R0,#0x80 @Check if FIQ is enabled.
+ moveq R0,#1
+ movne R0,#0
+ bx LR
ASM_PFX(ArmInvalidateTlb):
mov r0,#0
bx LR
ArmEnableInterrupts
-\s\smrs R0,CPSR
-\s\sbic R0,R0,#0x80\s\s\s\s;Enable IRQ interrupts
-\s\smsr CPSR_c,R0
-\s\sbx LR
+ mrs R0,CPSR
+ bic R0,R0,#0x80 ;Enable IRQ interrupts
+ msr CPSR_c,R0
+ bx LR
ArmDisableInterrupts
-\s\smrs R0,CPSR
-\s\sorr R1,R0,#0x80\s\s\s\s;Disable IRQ interrupts
-\s\smsr CPSR_c,R1
+ mrs R0,CPSR
+ orr R1,R0,#0x80 ;Disable IRQ interrupts
+ msr CPSR_c,R1
tst R0,#0x80
moveq R0,#1
movne R0,#0
-\s\sbx LR
+ bx LR
ArmGetInterruptState
-\s\smrs R0,CPSR
-\s\stst R0,#0x80\s\s ;Check if IRQ is enabled.
-\s\smoveq R0,#1
-\s\smovne R0,#0
-\s\sbx LR
+ mrs R0,CPSR
+ tst R0,#0x80 ;Check if IRQ is enabled.
+ moveq R0,#1
+ movne R0,#0
+ bx LR
ArmEnableFiq
-\s\smrs R0,CPSR
-\s\sbic R0,R0,#0x40\s\s\s\s;Enable IRQ interrupts
-\s\smsr CPSR_c,R0
-\s\sbx LR
+ mrs R0,CPSR
+ bic R0,R0,#0x40 ;Enable IRQ interrupts
+ msr CPSR_c,R0
+ bx LR
ArmDisableFiq
-\s\smrs R0,CPSR
-\s\sorr R1,R0,#0x40\s\s\s\s;Disable IRQ interrupts
-\s\smsr CPSR_c,R1
+ mrs R0,CPSR
+ orr R1,R0,#0x40 ;Disable IRQ interrupts
+ msr CPSR_c,R1
tst R0,#0x40
moveq R0,#1
movne R0,#0
-\s\sbx LR
+ bx LR
ArmGetFiqState
-\s\smrs R0,CPSR
-\s\stst R0,#0x40\s\s ;Check if IRQ is enabled.
-\s\smoveq R0,#1
-\s\smovne R0,#0
-\s\sbx LR
+ mrs R0,CPSR
+ tst R0,#0x40 ;Check if IRQ is enabled.
+ moveq R0,#1
+ movne R0,#0
+ bx LR
ArmInvalidateTlb
mov r0,#0
#include <Library/IoLib.h>\r
\r
VOID ArmClearMPCoreMailbox() {\r
-\s\sMmioWrite32(PcdGet32(PcdMPCoreMailboxClearAddress),PcdGet32(PcdMPCoreMailboxClearValue));\r
+ MmioWrite32(PcdGet32(PcdMPCoreMailboxClearAddress),PcdGet32(PcdMPCoreMailboxClearValue));\r
}\r
\r
UINTN ArmGetMPCoreMailbox() {\r
Region = (UINT32*)((UINTN)TzascBase + TZASC_REGIONS_REG + (RegionId * 0x10));\r
\r
MmioWrite32((UINTN)(Region), LowAddress&0xFFFF8000);\r
-\s\sMmioWrite32((UINTN)(Region+1), HighAddress);\r
-\s\sMmioWrite32((UINTN)(Region+2), ((Security & 0xF) <<28) | ((Size & 0x3F) << 1) | (Enabled & 0x1));\r
+ MmioWrite32((UINTN)(Region+1), HighAddress);\r
+ MmioWrite32((UINTN)(Region+2), ((Security & 0xF) <<28) | ((Size & 0x3F) << 1) | (Enabled & 0x1));\r
\r
return EFI_SUCCESS;\r
}\r
GCC_ASM_EXPORT(InternalMemCopyMem)\r
\r
ASM_PFX(InternalMemCopyMem):\r
-\s\sstmfd\s\ssp!, {r4-r11, lr}\r
-\s\stst\s\sr0, #3\r
-\s\smov\s\sr11, r0\r
-\s\smov\s\sr10, r0\r
-\s\smov\s\sip, r2\r
-\s\smov\s\slr, r1\r
-\s\smovne\s\sr0, #0\r
-\s\sbne\s\sL4\r
-\s\stst\s\sr1, #3\r
-\s\smovne\s\sr3, #0\r
-\s\smoveq\s\sr3, #1\r
-\s\scmp\s\sr2, #31\r
-\s\smovls\s\sr0, #0\r
-\s\sandhi\s\sr0, r3, #1\r
+ stmfd sp!, {r4-r11, lr}\r
+ tst r0, #3\r
+ mov r11, r0\r
+ mov r10, r0\r
+ mov ip, r2\r
+ mov lr, r1\r
+ movne r0, #0\r
+ bne L4\r
+ tst r1, #3\r
+ movne r3, #0\r
+ moveq r3, #1\r
+ cmp r2, #31\r
+ movls r0, #0\r
+ andhi r0, r3, #1\r
L4:\r
-\s\scmp\s\sr11, r1\r
-\s\sbcc\s\sL26\r
-\s\sbls\s\sL7\r
-\s\srsb\s\sr3, r1, r11\r
-\s\scmp\s\sip, r3\r
-\s\sbcc\s\sL26\r
-\s\scmp\s\sip, #0\r
-\s\sbeq\s\sL7\r
-\s\sadd\s\sr10, r11, ip\r
-\s\sadd\s\slr, ip, r1\r
-\s\sb\s\sL16\r
+ cmp r11, r1\r
+ bcc L26\r
+ bls L7\r
+ rsb r3, r1, r11\r
+ cmp ip, r3\r
+ bcc L26\r
+ cmp ip, #0\r
+ beq L7\r
+ add r10, r11, ip\r
+ add lr, ip, r1\r
+ b L16\r
L29:\r
-\s\ssub\s\sip, ip, #8\r
-\s\scmp\s\sip, #7\r
-\s\sldrd\s\sr2, [lr, #-8]!\r
-\s\smovls\s\sr0, #0\r
-\s\scmp\s\sip, #0\r
-\s\sstrd\s\sr2, [r10, #-8]!\r
-\s\sbeq\s\sL7\r
+ sub ip, ip, #8\r
+ cmp ip, #7\r
+ ldrd r2, [lr, #-8]!\r
+ movls r0, #0\r
+ cmp ip, #0\r
+ strd r2, [r10, #-8]!\r
+ beq L7\r
L16:\r
-\s\scmp\s\sr0, #0\r
-\s\sbne\s\sL29\r
-\s\ssub\s\sr3, lr, #1\r
-\s\ssub\s\sip, ip, #1\r
-\s\sldrb\s\sr3, [r3, #0]\s\s\r
-\s\ssub\s\sr2, r10, #1\r
-\s\scmp\s\sip, #0\r
-\s\ssub\s\sr10, r10, #1\r
-\s\ssub\s\slr, lr, #1\r
-\s\sstrb\s\sr3, [r2, #0]\r
-\s\sbne\s\sL16\r
-\s\sb L7\r
+ cmp r0, #0\r
+ bne L29\r
+ sub r3, lr, #1\r
+ sub ip, ip, #1\r
+ ldrb r3, [r3, #0] \r
+ sub r2, r10, #1\r
+ cmp ip, #0\r
+ sub r10, r10, #1\r
+ sub lr, lr, #1\r
+ strb r3, [r2, #0]\r
+ bne L16\r
+ b L7\r
L11:\r
-\s\sldrb\s\sr3, [lr], #1\s\s\r
-\s\ssub\s\sip, ip, #1\r
-\s\sstrb\s\sr3, [r10], #1\r
+ ldrb r3, [lr], #1 \r
+ sub ip, ip, #1\r
+ strb r3, [r10], #1\r
L26:\r
-\s\scmp\s\sip, #0\r
-\s\sbeq\s\sL7\r
+ cmp ip, #0\r
+ beq L7\r
L30:\r
-\s\scmp\s\sr0, #0\r
-\s\sbeq\s\sL11\r
-\s\ssub\s\sip, ip, #32\r
-\s\scmp\s\sip, #31\r
-\s\sldmia\s\slr!, {r2-r9}\r
-\s\smovls\s\sr0, #0\r
-\s\scmp\s\sip, #0\r
-\s\sstmia\s\sr10!, {r2-r9}\r
-\s\sbne\s\sL30\r
+ cmp r0, #0\r
+ beq L11\r
+ sub ip, ip, #32\r
+ cmp ip, #31\r
+ ldmia lr!, {r2-r9}\r
+ movls r0, #0\r
+ cmp ip, #0\r
+ stmia r10!, {r2-r9}\r
+ bne L30\r
L7:\r
- mov\s\sr0, r11\r
-\s\sldmfd\s\ssp!, {r4-r11, pc}\r
+ mov r0, r11\r
+ ldmfd sp!, {r4-r11, pc}\r
\r
IN UINTN Length\r
)\r
**/\r
-\s\sEXPORT InternalMemCopyMem\r
+ EXPORT InternalMemCopyMem\r
-\s\sAREA AsmMemStuff, CODE, READONLY
+ AREA AsmMemStuff, CODE, READONLY
\r
InternalMemCopyMem\r
-\s\sstmfd\s\ssp!, {r4-r11, lr}
-\s\stst\s\sr0, #3
-\s\smov\s\sr11, r0
-\s\smov\s\sr10, r0
-\s\smov\s\sip, r2
-\s\smov\s\slr, r1
-\s\smovne\s\sr0, #0
-\s\sbne\s\sL4
-\s\stst\s\sr1, #3
-\s\smovne\s\sr3, #0
-\s\smoveq\s\sr3, #1
-\s\scmp\s\sr2, #31
-\s\smovls\s\sr0, #0
-\s\sandhi\s\sr0, r3, #1
+ stmfd sp!, {r4-r11, lr}
+ tst r0, #3
+ mov r11, r0
+ mov r10, r0
+ mov ip, r2
+ mov lr, r1
+ movne r0, #0
+ bne L4
+ tst r1, #3
+ movne r3, #0
+ moveq r3, #1
+ cmp r2, #31
+ movls r0, #0
+ andhi r0, r3, #1
L4
-\s\scmp\s\sr11, r1
-\s\sbcc\s\sL26
-\s\sbls\s\sL7
-\s\srsb\s\sr3, r1, r11
-\s\scmp\s\sip, r3
-\s\sbcc\s\sL26
-\s\scmp\s\sip, #0
-\s\sbeq\s\sL7
-\s\sadd\s\sr10, r11, ip
-\s\sadd\s\slr, ip, r1
-\s\sb\s\sL16
+ cmp r11, r1
+ bcc L26
+ bls L7
+ rsb r3, r1, r11
+ cmp ip, r3
+ bcc L26
+ cmp ip, #0
+ beq L7
+ add r10, r11, ip
+ add lr, ip, r1
+ b L16
L29
-\s\ssub\s\sip, ip, #8
-\s\scmp\s\sip, #7
-\s\sldrd\s\sr2, [lr, #-8]!
-\s\smovls\s\sr0, #0
-\s\scmp\s\sip, #0
-\s\sstrd\s\sr2, [r10, #-8]!
-\s\sbeq\s\sL7
+ sub ip, ip, #8
+ cmp ip, #7
+ ldrd r2, [lr, #-8]!
+ movls r0, #0
+ cmp ip, #0
+ strd r2, [r10, #-8]!
+ beq L7
L16
-\s\scmp\s\sr0, #0
-\s\sbne\s\sL29
-\s\ssub\s\sr3, lr, #1
-\s\ssub\s\sip, ip, #1
-\s\sldrb\s\sr3, [r3, #0]\s\s
-\s\ssub\s\sr2, r10, #1
-\s\scmp\s\sip, #0
-\s\ssub\s\sr10, r10, #1
-\s\ssub\s\slr, lr, #1
-\s\sstrb\s\sr3, [r2, #0]
-\s\sbne\s\sL16
-\s\sb L7
+ cmp r0, #0
+ bne L29
+ sub r3, lr, #1
+ sub ip, ip, #1
+ ldrb r3, [r3, #0]
+ sub r2, r10, #1
+ cmp ip, #0
+ sub r10, r10, #1
+ sub lr, lr, #1
+ strb r3, [r2, #0]
+ bne L16
+ b L7
L11
-\s\sldrb\s\sr3, [lr], #1\s\s
-\s\ssub\s\sip, ip, #1
-\s\sstrb\s\sr3, [r10], #1
+ ldrb r3, [lr], #1
+ sub ip, ip, #1
+ strb r3, [r10], #1
L26
-\s\scmp\s\sip, #0
-\s\sbeq\s\sL7
+ cmp ip, #0
+ beq L7
L30
-\s\scmp\s\sr0, #0
-\s\sbeq\s\sL11
-\s\ssub\s\sip, ip, #32
-\s\scmp\s\sip, #31
-\s\sldmia\s\slr!, {r2-r9}
-\s\smovls\s\sr0, #0
-\s\scmp\s\sip, #0
-\s\sstmia\s\sr10!, {r2-r9}
-\s\sbne\s\sL30
+ cmp r0, #0
+ beq L11
+ sub ip, ip, #32
+ cmp ip, #31
+ ldmia lr!, {r2-r9}
+ movls r0, #0
+ cmp ip, #0
+ stmia r10!, {r2-r9}
+ bne L30
L7
- mov\s\sr0, r11
-\s\sldmfd\s\ssp!, {r4-r11, pc}\r
-\s\s\r
+ mov r0, r11
+ ldmfd sp!, {r4-r11, pc}\r
+ \r
END\r
\r
IN UINT8 Value\r
)\r
**/\r
-\s\s\r
+ \r
.text\r
.align 2\r
GCC_ASM_EXPORT(InternalMemSetMem)\r
\r
ASM_PFX(InternalMemSetMem):\r
-\s\sstmfd\s\ssp!, {r4-r11, lr}\r
-\s\stst\s\s r0, #3\r
-\s\smovne\s\sr3, #0\r
-\s\smoveq\s\sr3, #1\r
-\s\scmp\s\s r1, #31\r
-\s\smovls lr, #0\r
-\s\sandhi\s\slr, r3, #1\r
-\s\scmp\s\s lr, #0\r
-\s\smov\s\s r12, r0\r
-\s\sbne\s\s L31\r
+ stmfd sp!, {r4-r11, lr}\r
+ tst r0, #3\r
+ movne r3, #0\r
+ moveq r3, #1\r
+ cmp r1, #31\r
+ movls lr, #0\r
+ andhi lr, r3, #1\r
+ cmp lr, #0\r
+ mov r12, r0\r
+ bne L31\r
L32:\r
-\s\smov\s\s r3, #0\r
-\s\sb\s\s L43\r
+ mov r3, #0\r
+ b L43\r
L31:\r
and r4, r2, #0xff\r
orr r4, r4, r4, LSL #8\r
orr r4, r4, r4, LSL #16 \r
-\s\smov r5, r4\r
-\s\smov r5, r4\r
-\s\smov r6, r4\r
-\s\smov r7, r4 \r
-\s\smov r8, r4 \r
-\s\smov r9, r4 \r
-\s\smov r10, r4 \r
-\s\smov r11, r4 \r
-\s\sb\s\s L32\r
+ mov r5, r4\r
+ mov r5, r4\r
+ mov r6, r4\r
+ mov r7, r4 \r
+ mov r8, r4 \r
+ mov r9, r4 \r
+ mov r10, r4 \r
+ mov r11, r4 \r
+ b L32\r
L34:\r
-\s\scmp\s\s lr, #0\r
-\s\sstreqb\s\sr2, [r12], #1\r
-\s\ssubeq\s\s r1, r1, #1\r
-\s\sbeq\s\s L43\r
-\s\ssub\s\s r1, r1, #32\r
-\s\scmp\s\s r1, #31\r
-\s\smovls\s\s lr, r3\r
-\s\sstmia\s\s r12!, {r4-r11}\r
+ cmp lr, #0\r
+ streqb r2, [r12], #1\r
+ subeq r1, r1, #1\r
+ beq L43\r
+ sub r1, r1, #32\r
+ cmp r1, #31\r
+ movls lr, r3\r
+ stmia r12!, {r4-r11}\r
L43:\r
-\s\scmp\s\s r1, #0\r
-\s\sbne\s\s L34\r
-\s\sldmfd\s\s sp!, {r4-r11, pc}\r
-\s\s
\ No newline at end of file
+ cmp r1, #0\r
+ bne L34\r
+ ldmfd sp!, {r4-r11, pc}\r
+
\ No newline at end of file
IN UINT8 Value\r
)\r
**/\r
-\s\s\r
-\s\sEXPORT InternalMemSetMem\r
-\s\s\r
-\s\sAREA AsmMemStuff, CODE, READONLY\r
+ \r
+ EXPORT InternalMemSetMem\r
+ \r
+ AREA AsmMemStuff, CODE, READONLY\r
\r
InternalMemSetMem\r
-\s\sstmfd\s\ssp!, {r4-r11, lr}\r
-\s\stst\s\s r0, #3\r
-\s\smovne\s\sr3, #0\r
-\s\smoveq\s\sr3, #1\r
-\s\scmp\s\s r1, #31\r
-\s\smovls lr, #0\r
-\s\sandhi\s\slr, r3, #1\r
-\s\scmp\s\s lr, #0\r
-\s\smov\s\s r12, r0\r
-\s\sbne\s\s L31\r
+ stmfd sp!, {r4-r11, lr}\r
+ tst r0, #3\r
+ movne r3, #0\r
+ moveq r3, #1\r
+ cmp r1, #31\r
+ movls lr, #0\r
+ andhi lr, r3, #1\r
+ cmp lr, #0\r
+ mov r12, r0\r
+ bne L31\r
L32\r
-\s\smov\s\s r3, #0\r
-\s\sb\s\s L43\r
+ mov r3, #0\r
+ b L43\r
L31\r
and r4, r2, #0xff\r
orr r4, r4, r4, LSL #8\r
orr r4, r4, r4, LSL #16 \r
-\s\smov r5, r4\r
-\s\smov r5, r4\r
-\s\smov r6, r4\r
-\s\smov r7, r4 \r
-\s\smov r8, r4 \r
-\s\smov r9, r4 \r
-\s\smov r10, r4 \r
-\s\smov r11, r4 \r
-\s\sb\s\s L32\r
+ mov r5, r4\r
+ mov r5, r4\r
+ mov r6, r4\r
+ mov r7, r4 \r
+ mov r8, r4 \r
+ mov r9, r4 \r
+ mov r10, r4 \r
+ mov r11, r4 \r
+ b L32\r
L34\r
-\s\scmp\s\s lr, #0\r
-\s\sstreqb\s\sr2, [r12], #1\r
-\s\ssubeq\s\s r1, r1, #1\r
-\s\sbeq\s\s L43\r
-\s\ssub\s\s r1, r1, #32\r
-\s\scmp\s\s r1, #31\r
-\s\smovls\s\s lr, r3\r
-\s\sstmia\s\s r12!, {r4-r11}\r
+ cmp lr, #0\r
+ streqb r2, [r12], #1\r
+ subeq r1, r1, #1\r
+ beq L43\r
+ sub r1, r1, #32\r
+ cmp r1, #31\r
+ movls lr, r3\r
+ stmia r12!, {r4-r11}\r
L43\r
-\s\scmp\s\s r1, #0\r
-\s\sbne\s\s L34\r
-\s\sldmfd\s\s sp!, {r4-r11, pc}\r
-\s\s\r
+ cmp r1, #0\r
+ bne L34\r
+ ldmfd sp!, {r4-r11, pc}\r
+ \r
END\r
\ No newline at end of file
GCC_ASM_EXPORT(InternalMemCopyMem)\r
\r
ASM_PFX(InternalMemCopyMem):\r
-\s\sstmfd\s\ssp!, {r4, r9, lr}\r
-\s\stst\s\sr0, #3\r
-\s\smov\s\sr4, r0\r
-\s\smov\s\sr9, r0\r
-\s\smov\s\sip, r2\r
-\s\smov\s\slr, r1\r
-\s\smovne\s\sr0, #0\r
-\s\sbne\s\sL4\r
-\s\stst\s\sr1, #3\r
-\s\smovne\s\sr3, #0\r
-\s\smoveq\s\sr3, #1\r
-\s\scmp\s\sr2, #127\r
-\s\smovls\s\sr0, #0\r
-\s\sandhi\s\sr0, r3, #1\r
+ stmfd sp!, {r4, r9, lr}\r
+ tst r0, #3\r
+ mov r4, r0\r
+ mov r9, r0\r
+ mov ip, r2\r
+ mov lr, r1\r
+ movne r0, #0\r
+ bne L4\r
+ tst r1, #3\r
+ movne r3, #0\r
+ moveq r3, #1\r
+ cmp r2, #127\r
+ movls r0, #0\r
+ andhi r0, r3, #1\r
L4:\r
-\s\scmp\s\sr4, r1\r
-\s\sbcc\s\sL26\r
-\s\sbls\s\sL7\r
-\s\srsb\s\sr3, r1, r4\r
-\s\scmp\s\sip, r3\r
-\s\sbcc\s\sL26\r
-\s\scmp\s\sip, #0\r
-\s\sbeq\s\sL7\r
-\s\sadd\s\sr9, r4, ip\r
-\s\sadd\s\slr, ip, r1\r
-\s\sb\s\sL16\r
+ cmp r4, r1\r
+ bcc L26\r
+ bls L7\r
+ rsb r3, r1, r4\r
+ cmp ip, r3\r
+ bcc L26\r
+ cmp ip, #0\r
+ beq L7\r
+ add r9, r4, ip\r
+ add lr, ip, r1\r
+ b L16\r
L29:\r
-\s\ssub\s\sip, ip, #8\r
-\s\scmp\s\sip, #7\r
-\s\sldrd\s\sr2, [lr, #-8]!\r
-\s\smovls\s\sr0, #0\r
-\s\scmp\s\sip, #0\r
-\s\sstrd\s\sr2, [r9, #-8]!\r
-\s\sbeq\s\sL7\r
+ sub ip, ip, #8\r
+ cmp ip, #7\r
+ ldrd r2, [lr, #-8]!\r
+ movls r0, #0\r
+ cmp ip, #0\r
+ strd r2, [r9, #-8]!\r
+ beq L7\r
L16:\r
-\s\scmp\s\sr0, #0\r
-\s\sbne\s\sL29\r
-\s\ssub\s\sr3, lr, #1\r
-\s\ssub\s\sip, ip, #1\r
-\s\sldrb\s\sr3, [r3, #0]\s\s\r
-\s\ssub\s\sr2, r9, #1\r
-\s\scmp\s\sip, #0\r
-\s\ssub\s\sr9, r9, #1\r
-\s\ssub\s\slr, lr, #1\r
-\s\sstrb\s\sr3, [r2, #0]\r
-\s\sbne\s\sL16\r
-\s\sb L7\r
+ cmp r0, #0\r
+ bne L29\r
+ sub r3, lr, #1\r
+ sub ip, ip, #1\r
+ ldrb r3, [r3, #0] \r
+ sub r2, r9, #1\r
+ cmp ip, #0\r
+ sub r9, r9, #1\r
+ sub lr, lr, #1\r
+ strb r3, [r2, #0]\r
+ bne L16\r
+ b L7\r
L11:\r
-\s\sldrb\s\sr3, [lr], #1\s\s\r
-\s\ssub\s\sip, ip, #1\r
-\s\sstrb\s\sr3, [r9], #1\r
+ ldrb r3, [lr], #1 \r
+ sub ip, ip, #1\r
+ strb r3, [r9], #1\r
L26:\r
-\s\scmp\s\sip, #0\r
-\s\sbeq\s\sL7\r
+ cmp ip, #0\r
+ beq L7\r
L30:\r
-\s\scmp\s\sr0, #0\r
-\s\sbeq\s\sL11\r
-\s\ssub\s\sip, ip, #128 // 32\r
-\s\scmp\s\sip, #127 // 31\r
-\s\svldm lr!, {d0-d15}\r
-\s\smovls\s\sr0, #0\r
-\s\scmp\s\sip, #0\r
-\s\svstm r9!, {d0-d15}\r
-\s\sbne\s\sL30\r
+ cmp r0, #0\r
+ beq L11\r
+ sub ip, ip, #128 // 32\r
+ cmp ip, #127 // 31\r
+ vldm lr!, {d0-d15}\r
+ movls r0, #0\r
+ cmp ip, #0\r
+ vstm r9!, {d0-d15}\r
+ bne L30\r
L7:\r
dsb\r
- mov\s\sr0, r4\r
-\s\sldmfd\s\ssp!, {r4, r9, pc}\r
+ mov r0, r4\r
+ ldmfd sp!, {r4, r9, pc}\r
\r
\r
IN UINTN Length\r
)\r
**/\r
-\s\sEXPORT InternalMemCopyMem\r
+ EXPORT InternalMemCopyMem\r
-\s\sAREA AsmMemStuff, CODE, READONLY
+ AREA AsmMemStuff, CODE, READONLY
\r
InternalMemCopyMem\r
-\s\sstmfd\s\ssp!, {r4, r9, lr}
-\s\stst\s\sr0, #3
-\s\smov\s\sr4, r0
-\s\smov\s\sr9, r0
-\s\smov\s\sip, r2
-\s\smov\s\slr, r1
-\s\smovne\s\sr0, #0
-\s\sbne\s\sL4
-\s\stst\s\sr1, #3
-\s\smovne\s\sr3, #0
-\s\smoveq\s\sr3, #1
-\s\scmp\s\sr2, #127
-\s\smovls\s\sr0, #0
-\s\sandhi\s\sr0, r3, #1
+ stmfd sp!, {r4, r9, lr}
+ tst r0, #3
+ mov r4, r0
+ mov r9, r0
+ mov ip, r2
+ mov lr, r1
+ movne r0, #0
+ bne L4
+ tst r1, #3
+ movne r3, #0
+ moveq r3, #1
+ cmp r2, #127
+ movls r0, #0
+ andhi r0, r3, #1
L4
-\s\scmp\s\sr4, r1
-\s\sbcc\s\sL26
-\s\sbls\s\sL7
-\s\srsb\s\sr3, r1, r4
-\s\scmp\s\sip, r3
-\s\sbcc\s\sL26
-\s\scmp\s\sip, #0
-\s\sbeq\s\sL7
-\s\sadd\s\sr9, r4, ip
-\s\sadd\s\slr, ip, r1
-\s\sb\s\sL16
+ cmp r4, r1
+ bcc L26
+ bls L7
+ rsb r3, r1, r4
+ cmp ip, r3
+ bcc L26
+ cmp ip, #0
+ beq L7
+ add r9, r4, ip
+ add lr, ip, r1
+ b L16
L29
-\s\ssub\s\sip, ip, #8
-\s\scmp\s\sip, #7
-\s\sldrd\s\sr2, [lr, #-8]!
-\s\smovls\s\sr0, #0
-\s\scmp\s\sip, #0
-\s\sstrd\s\sr2, [r9, #-8]!
-\s\sbeq\s\sL7
+ sub ip, ip, #8
+ cmp ip, #7
+ ldrd r2, [lr, #-8]!
+ movls r0, #0
+ cmp ip, #0
+ strd r2, [r9, #-8]!
+ beq L7
L16
-\s\scmp\s\sr0, #0
-\s\sbne\s\sL29
-\s\ssub\s\sr3, lr, #1
-\s\ssub\s\sip, ip, #1
-\s\sldrb\s\sr3, [r3, #0]\s\s
-\s\ssub\s\sr2, r9, #1
-\s\scmp\s\sip, #0
-\s\ssub\s\sr9, r9, #1
-\s\ssub\s\slr, lr, #1
-\s\sstrb\s\sr3, [r2, #0]
-\s\sbne\s\sL16
-\s\sb L7
+ cmp r0, #0
+ bne L29
+ sub r3, lr, #1
+ sub ip, ip, #1
+ ldrb r3, [r3, #0]
+ sub r2, r9, #1
+ cmp ip, #0
+ sub r9, r9, #1
+ sub lr, lr, #1
+ strb r3, [r2, #0]
+ bne L16
+ b L7
L11
-\s\sldrb\s\sr3, [lr], #1\s\s
-\s\ssub\s\sip, ip, #1
-\s\sstrb\s\sr3, [r9], #1
+ ldrb r3, [lr], #1
+ sub ip, ip, #1
+ strb r3, [r9], #1
L26
-\s\scmp\s\sip, #0
-\s\sbeq\s\sL7
+ cmp ip, #0
+ beq L7
L30
-\s\scmp\s\sr0, #0
-\s\sbeq\s\sL11
-\s\ssub\s\sip, ip, #128 // 32
-\s\scmp\s\sip, #127 // 31
-\s\svldm lr!, {d0-d15}
-\s\smovls\s\sr0, #0
-\s\scmp\s\sip, #0
-\s\svstm r9!, {d0-d15}
-\s\sbne\s\sL30
+ cmp r0, #0
+ beq L11
+ sub ip, ip, #128 // 32
+ cmp ip, #127 // 31
+ vldm lr!, {d0-d15}
+ movls r0, #0
+ cmp ip, #0
+ vstm r9!, {d0-d15}
+ bne L30
L7
dsb
- mov\s\sr0, r4
-\s\sldmfd\s\ssp!, {r4, r9, pc}
+ mov r0, r4
+ ldmfd sp!, {r4, r9, pc}
\r
END\r
\r
IN UINT8 Value\r
)\r
**/\r
-\s\s\r
+ \r
.text\r
.align 2\r
GCC_ASM_EXPORT(InternalMemSetMem)\r
\r
ASM_PFX(InternalMemSetMem):\r
-\s\sstmfd\s\ssp!, {r4-r7, lr}\r
-\s\stst\s\s r0, #3\r
-\s\smovne\s\sr3, #0\r
-\s\smoveq\s\sr3, #1\r
-\s\scmp\s\s r1, #127\r
-\s\smovls lr, #0\r
-\s\sandhi\s\slr, r3, #1\r
-\s\scmp\s\s lr, #0\r
-\s\smov\s\s r12, r0\r
-\s\sbne\s\s L31\r
+ stmfd sp!, {r4-r7, lr}\r
+ tst r0, #3\r
+ movne r3, #0\r
+ moveq r3, #1\r
+ cmp r1, #127\r
+ movls lr, #0\r
+ andhi lr, r3, #1\r
+ cmp lr, #0\r
+ mov r12, r0\r
+ bne L31\r
L32:\r
-\s\smov\s\s r3, #0\r
-\s\sb\s\s L43\r
+ mov r3, #0\r
+ b L43\r
L31:\r
vdup.8 q0,r2\r
vmov q1,q0\r
vmov q5,q0\r
vmov q6,q0\r
vmov q7,q0\r
-\s\sb\s\s L32\r
+ b L32\r
L34:\r
-\s\scmp\s\s lr, #0\r
-\s\sstreqb\s\sr2, [r12], #1\r
-\s\ssubeq\s\s r1, r1, #1\r
-\s\sbeq\s\s L43\r
-\s\ssub\s\s r1, r1, #128\r
-\s\scmp\s\s r1, #127\r
-\s\scmp\s\s r1, #31\r
-\s\smovls\s\s lr, r3\r
-\s\svstm r12!, {d0-d15}\r
+ cmp lr, #0\r
+ streqb r2, [r12], #1\r
+ subeq r1, r1, #1\r
+ beq L43\r
+ sub r1, r1, #128\r
+ cmp r1, #127\r
+ cmp r1, #31\r
+ movls lr, r3\r
+ vstm r12!, {d0-d15}\r
L43:\r
-\s\scmp\s\s r1, #0\r
-\s\sbne\s\s L34\r
-\s\sldmfd\s\s sp!, {pc}\r
-\s\s
\ No newline at end of file
+ cmp r1, #0\r
+ bne L34\r
+ ldmfd sp!, {pc}\r
+
\ No newline at end of file
IN UINT8 Value\r
)\r
**/\r
-\s\s\r
-\s\sEXPORT InternalMemSetMem\r
-\s\s\r
-\s\sAREA AsmMemStuff, CODE, READONLY
+ \r
+ EXPORT InternalMemSetMem\r
+ \r
+ AREA AsmMemStuff, CODE, READONLY
\r
InternalMemSetMem\r
-\s\sstmfd\s\ssp!, {lr}\r
-\s\stst\s\s r0, #3\r
-\s\smovne\s\sr3, #0\r
-\s\smoveq\s\sr3, #1\r
-\s\scmp\s\s r1, #127\r
-\s\smovls lr, #0\r
-\s\sandhi\s\slr, r3, #1\r
-\s\scmp\s\s lr, #0\r
-\s\smov\s\s r12, r0\r
-\s\sbne\s\s L31\r
+ stmfd sp!, {lr}\r
+ tst r0, #3\r
+ movne r3, #0\r
+ moveq r3, #1\r
+ cmp r1, #127\r
+ movls lr, #0\r
+ andhi lr, r3, #1\r
+ cmp lr, #0\r
+ mov r12, r0\r
+ bne L31\r
L32\r
-\s\smov\s\s r3, #0\r
-\s\sb\s\s L43\r
+ mov r3, #0\r
+ b L43\r
L31\r
vdup.8 q0,r2\r
vmov q1,q0\r
vmov q5,q0\r
vmov q6,q0\r
vmov q7,q0\r
-\s\sb\s\s L32\r
+ b L32\r
L34\r
-\s\scmp\s\s lr, #0\r
-\s\sstreqb\s\sr2, [r12], #1\r
-\s\ssubeq\s\s r1, r1, #1\r
-\s\sbeq\s\s L43\r
-\s\ssub\s\s r1, r1, #128\r
-\s\scmp\s\s r1, #127\r
-\s\smovls\s\s lr, r3\r
-\s\svstm r12!, {d0-d15}\r
+ cmp lr, #0\r
+ streqb r2, [r12], #1\r
+ subeq r1, r1, #1\r
+ beq L43\r
+ sub r1, r1, #128\r
+ cmp r1, #127\r
+ movls lr, r3\r
+ vstm r12!, {d0-d15}\r
L43\r
-\s\scmp\s\s r1, #0\r
-\s\sbne\s\s L34\r
-\s\sldmfd\s\s sp!, {pc}\r
-\s\s\r
+ cmp r1, #0\r
+ bne L34\r
+ ldmfd sp!, {pc}\r
+ \r
END\r
\ No newline at end of file
}
//Try to Open the volume and get root directory
-\s\sStatus = FsProtocol->OpenVolume(FsProtocol, &Fs);
-\s\sif (EFI_ERROR(Status)) {
+ Status = FsProtocol->OpenVolume(FsProtocol, &Fs);
+ if (EFI_ERROR(Status)) {
return Status;
}
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__ashldi3)
-\s\s
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__ashldi3)
+
ASM_PFX(__ashldi3):
-\s\scmp\s\sr2, #31
-\s\sbls\s\sL2
-\s\scmp\s\sr2, #63
-\s\ssubls\s\sr2, r2, #32
-\s\smovls\s\sr2, r0, asl r2
-\s\smovhi\s\sr2, #0
-\s\smov\s\sr1, r2
-\s\smov\s\sr0, #0
-\s\sbx\s\slr
+ cmp r2, #31
+ bls L2
+ cmp r2, #63
+ subls r2, r2, #32
+ movls r2, r0, asl r2
+ movhi r2, #0
+ mov r1, r2
+ mov r0, #0
+ bx lr
L2:
-\s\scmp\s\sr2, #0
-\s\srsbne\s\sr3, r2, #32
-\s\smovne\s\sr3, r0, lsr r3
-\s\smovne\s\sr0, r0, asl r2
-\s\sorrne\s\sr1, r3, r1, asl r2
-\s\sbx\s\slr
+ cmp r2, #0
+ rsbne r3, r2, #32
+ movne r3, r0, lsr r3
+ movne r0, r0, asl r2
+ orrne r1, r3, r1, asl r2
+ bx lr
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__ashrdi3)
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__ashrdi3)
ASM_PFX(__ashrdi3):
-\s\scmp\s\sr2, #31
-\s\sbls\s\sL2
-\s\scmp\s\sr2, #63
-\s\ssubls\s\sr2, r2, #32
-\s\smov\s\sip, r1, asr #31
-\s\smovls\s\sr2, r1, asr r2
-\s\smovhi\s\sr2, ip
-\s\smov\s\sr0, r2
-\s\smov\s\sr1, ip
-\s\sbx\s\slr
+ cmp r2, #31
+ bls L2
+ cmp r2, #63
+ subls r2, r2, #32
+ mov ip, r1, asr #31
+ movls r2, r1, asr r2
+ movhi r2, ip
+ mov r0, r2
+ mov r1, ip
+ bx lr
L2:
-\s\scmp\s\sr2, #0
-\s\srsbne\s\sr3, r2, #32
-\s\smovne\s\sr3, r1, asl r3
-\s\smovne\s\sr1, r1, asr r2
-\s\sorrne\s\sr0, r3, r0, lsr r2
-\s\sbx\s\slr
+ cmp r2, #0
+ rsbne r3, r2, #32
+ movne r3, r1, asl r3
+ movne r1, r1, asr r2
+ orrne r0, r3, r0, lsr r2
+ bx lr
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__clzsi2)
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__clzsi2)
ASM_PFX(__clzsi2):
-\s\s@ frame_needed = 1, uses_anonymous_args = 0
-\s\sstmfd\s\ssp!, {r7, lr}
-\s\sadd\s\sr7, sp, #0
-\s\smovs\s\sr3, r0, lsr #16
-\s\smovne\s\sr3, #16
-\s\smoveq\s\sr3, #0
-\s\smovne\s\sr9, #0
-\s\smoveq\s\sr9, #16
-\s\smov\s\sr3, r0, lsr r3
-\s\stst\s\sr3, #65280
-\s\smovne\s\sr0, #8
-\s\smoveq\s\sr0, #0
-\s\smovne\s\slr, #0
-\s\smoveq\s\slr, #8
-\s\smov\s\sr3, r3, lsr r0
-\s\stst\s\sr3, #240
-\s\smovne\s\sr0, #4
-\s\smoveq\s\sr0, #0
-\s\smovne\s\sip, #0
-\s\smoveq\s\sip, #4
-\s\smov\s\sr3, r3, lsr r0
-\s\stst\s\sr3, #12
-\s\smovne\s\sr0, #2
-\s\smoveq\s\sr0, #0
-\s\smovne\s\sr1, #0
-\s\smoveq\s\sr1, #2
-\s\smov\s\sr2, r3, lsr r0
-\s\sadd\s\sr3, lr, r9
-\s\sadd\s\sr0, r3, ip
-\s\sadd\s\sr1, r0, r1
-\s\smov\s\sr0, r2, lsr #1
-\s\seor\s\sr0, r0, #1
-\s\sands\s\sr0, r0, #1
-\s\smvnne\s\sr0, #0
-\s\srsb\s\sr3, r2, #2
-\s\sand\s\sr0, r0, r3
-\s\sadd\s\sr0, r1, r0
-\s\sldmfd\s\ssp!, {r7, pc}
+ @ frame_needed = 1, uses_anonymous_args = 0
+ stmfd sp!, {r7, lr}
+ add r7, sp, #0
+ movs r3, r0, lsr #16
+ movne r3, #16
+ moveq r3, #0
+ movne r9, #0
+ moveq r9, #16
+ mov r3, r0, lsr r3
+ tst r3, #65280
+ movne r0, #8
+ moveq r0, #0
+ movne lr, #0
+ moveq lr, #8
+ mov r3, r3, lsr r0
+ tst r3, #240
+ movne r0, #4
+ moveq r0, #0
+ movne ip, #0
+ moveq ip, #4
+ mov r3, r3, lsr r0
+ tst r3, #12
+ movne r0, #2
+ moveq r0, #0
+ movne r1, #0
+ moveq r1, #2
+ mov r2, r3, lsr r0
+ add r3, lr, r9
+ add r0, r3, ip
+ add r1, r0, r1
+ mov r0, r2, lsr #1
+ eor r0, r0, #1
+ ands r0, r0, #1
+ mvnne r0, #0
+ rsb r3, r2, #2
+ and r0, r0, r3
+ add r0, r1, r0
+ ldmfd sp!, {r7, pc}
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__ctzsi2)
-\s\s
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__ctzsi2)
+
ASM_PFX(__ctzsi2):
-\s\suxth\s\sr3, r0
-\s\scmp\s\sr3, #0
-\s\smoveq\s\sip, #16
-\s\smovne\s\sip, #0
-\s\s@ lr needed for prologue
-\s\smov\s\sr0, r0, lsr ip
-\s\stst\s\sr0, #255
-\s\smovne\s\sr3, #0
-\s\smoveq\s\sr3, #8
-\s\smov\s\sr0, r0, lsr r3
-\s\stst\s\sr0, #15
-\s\smovne\s\sr1, #0
-\s\smoveq\s\sr1, #4
-\s\sadd\s\sr3, r3, ip
-\s\smov\s\sr0, r0, lsr r1
-\s\stst\s\sr0, #3
-\s\smovne\s\sr2, #0
-\s\smoveq\s\sr2, #2
-\s\sadd\s\sr3, r3, r1
-\s\smov\s\sr0, r0, lsr r2
-\s\sand\s\sr0, r0, #3
-\s\sadd\s\sr2, r3, r2
-\s\seor\s\sr3, r0, #1
-\s\smov\s\sr0, r0, lsr #1
-\s\sands\s\sr3, r3, #1
-\s\smvnne\s\sr3, #0
-\s\srsb\s\sr0, r0, #2
-\s\sand\s\sr0, r3, r0
-\s\sadd\s\sr0, r2, r0
-\s\sbx\s\slr
+ uxth r3, r0
+ cmp r3, #0
+ moveq ip, #16
+ movne ip, #0
+ @ lr needed for prologue
+ mov r0, r0, lsr ip
+ tst r0, #255
+ movne r3, #0
+ moveq r3, #8
+ mov r0, r0, lsr r3
+ tst r0, #15
+ movne r1, #0
+ moveq r1, #4
+ add r3, r3, ip
+ mov r0, r0, lsr r1
+ tst r0, #3
+ movne r2, #0
+ moveq r2, #2
+ add r3, r3, r1
+ mov r0, r0, lsr r2
+ and r0, r0, #3
+ add r2, r3, r2
+ eor r3, r0, #1
+ mov r0, r0, lsr #1
+ ands r3, r3, #1
+ mvnne r3, #0
+ rsb r0, r0, #2
+ and r0, r3, r0
+ add r0, r2, r0
+ bx lr
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__divdi3)
-\s\s
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__divdi3)
+
ASM_PFX(__divdi3):
-\s\s@ args = 0, pretend = 0, frame = 0
-\s\s@ frame_needed = 1, uses_anonymous_args = 0
-\s\sstmfd\s\ssp!, {r4, r5, r7, lr}
-\s\smov\s\sr4, r3, asr #31
-\s\sadd\s\sr7, sp, #8
-\s\sstmfd\s\ssp!, {r10, r11}
-\s\smov\s\sr10, r1, asr #31
-\s\ssub\s\ssp, sp, #8
-\s\smov\s\sr11, r10
-\s\smov\s\sr5, r4
-\s\seor\s\sr0, r0, r10
-\s\seor\s\sr1, r1, r10
-\s\seor\s\sr2, r2, r4
-\s\seor\s\sr3, r3, r4
-\s\ssubs\s\sr2, r2, r4
-\s\ssbc\s\sr3, r3, r5
-\s\smov\s\sip, #0
-\s\ssubs\s\sr0, r0, r10
-\s\ssbc\s\sr1, r1, r11
-\s\sstr\s\sip, [sp, #0]
-\s\sbl\s\sASM_PFX(__udivmoddi4)
-\s\seor\s\sr2, r10, r4
-\s\seor\s\sr3, r10, r4
-\s\seor\s\sr0, r0, r2
-\s\seor\s\sr1, r1, r3
-\s\ssubs\s\sr0, r0, r2
-\s\ssbc\s\sr1, r1, r3
-\s\ssub\s\ssp, r7, #16
-\s\sldmfd\s\ssp!, {r10, r11}
-\s\sldmfd\s\ssp!, {r4, r5, r7, pc}
+ @ args = 0, pretend = 0, frame = 0
+ @ frame_needed = 1, uses_anonymous_args = 0
+ stmfd sp!, {r4, r5, r7, lr}
+ mov r4, r3, asr #31
+ add r7, sp, #8
+ stmfd sp!, {r10, r11}
+ mov r10, r1, asr #31
+ sub sp, sp, #8
+ mov r11, r10
+ mov r5, r4
+ eor r0, r0, r10
+ eor r1, r1, r10
+ eor r2, r2, r4
+ eor r3, r3, r4
+ subs r2, r2, r4
+ sbc r3, r3, r5
+ mov ip, #0
+ subs r0, r0, r10
+ sbc r1, r1, r11
+ str ip, [sp, #0]
+ bl ASM_PFX(__udivmoddi4)
+ eor r2, r10, r4
+ eor r3, r10, r4
+ eor r0, r0, r2
+ eor r1, r1, r3
+ subs r0, r0, r2
+ sbc r1, r1, r3
+ sub sp, r7, #16
+ ldmfd sp!, {r10, r11}
+ ldmfd sp!, {r4, r5, r7, pc}
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__divsi3)
-\s\s
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__divsi3)
+
ASM_PFX(__divsi3):
-\s\seor\s\sr3, r0, r0, asr #31
-\s\seor\s\sr2, r1, r1, asr #31
-\s\sstmfd\s\ssp!, {r4, r5, r7, lr}
-\s\smov\s\sr5, r0, asr #31
-\s\sadd\s\sr7, sp, #8
-\s\smov\s\sr4, r1, asr #31
-\s\ssub\s\sr0, r3, r0, asr #31
-\s\ssub\s\sr1, r2, r1, asr #31
-\s\sbl\s\sASM_PFX(__udivsi3)
-\s\seor\s\sr1, r5, r4
-\s\seor\s\sr0, r0, r1
-\s\srsb\s\sr0, r1, r0
-\s\sldmfd\s\ssp!, {r4, r5, r7, pc}
+ eor r3, r0, r0, asr #31
+ eor r2, r1, r1, asr #31
+ stmfd sp!, {r4, r5, r7, lr}
+ mov r5, r0, asr #31
+ add r7, sp, #8
+ mov r4, r1, asr #31
+ sub r0, r3, r0, asr #31
+ sub r1, r2, r1, asr #31
+ bl ASM_PFX(__udivsi3)
+ eor r1, r5, r4
+ eor r0, r0, r1
+ rsb r0, r1, r0
+ ldmfd sp!, {r4, r5, r7, pc}
//------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__aeabi_ldivmod)
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__aeabi_ldivmod)
//
// A pair of (unsigned) long longs is returned in {{r0, r1}, {r2, r3}},
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__lshrdi3)
-\s\s
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__lshrdi3)
+
ASM_PFX(__lshrdi3):
-\s\scmp\s\sr2, #31
-\s\sbls\s\sL2
-\s\scmp\s\sr2, #63
-\s\ssubls\s\sr2, r2, #32
-\s\smovls\s\sr2, r1, lsr r2
-\s\smovhi\s\sr2, #0
-\s\smov\s\sr0, r2
-\s\smov\s\sr1, #0
-\s\sbx\s\slr
+ cmp r2, #31
+ bls L2
+ cmp r2, #63
+ subls r2, r2, #32
+ movls r2, r1, lsr r2
+ movhi r2, #0
+ mov r0, r2
+ mov r1, #0
+ bx lr
L2:
-\s\scmp\s\sr2, #0
-\s\srsbne\s\sr3, r2, #32
-\s\smovne\s\sr3, r1, asl r3
-\s\smovne\s\sr1, r1, lsr r2
-\s\sorrne\s\sr0, r3, r0, lsr r2
-\s\sbx\s\slr
+ cmp r2, #0
+ rsbne r3, r2, #32
+ movne r3, r1, asl r3
+ movne r1, r1, lsr r2
+ orrne r0, r3, r0, lsr r2
+ bx lr
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(memcpy)
+ .text
+ .align 2
+ GCC_ASM_EXPORT(memcpy)
ASM_PFX(memcpy):
-\s\sstmfd\s\ssp!, {r7, lr}
-\s\smov\s\sip, #0
-\s\sadd\s\sr7, sp, #0
-\s\smov\s\slr, r0
-\s\sb\s\sL4
+ stmfd sp!, {r7, lr}
+ mov ip, #0
+ add r7, sp, #0
+ mov lr, r0
+ b L4
L5:
-\s\sldrb\s\sr3, [r1], #1\s\s@ zero_extendqisi2
-\s\sadd\s\sip, ip, #1
-\s\sand\s\sr3, r3, #255
-\s\sstrb\s\sr3, [lr], #1
+ ldrb r3, [r1], #1 @ zero_extendqisi2
+ add ip, ip, #1
+ and r3, r3, #255
+ strb r3, [lr], #1
L4:
-\s\scmp\s\sip, r2
-\s\sbne\s\sL5
-\s\sldmfd\s\ssp!, {r7, pc}
+ cmp ip, r2
+ bne L5
+ ldmfd sp!, {r7, pc}
.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT (memset)
+ .align 2
+ GCC_ASM_EXPORT (memset)
ASM_PFX(memset):
-\s\s@ args = 0, pretend = 0, frame = 0
-\s\s@ frame_needed = 1, uses_anonymous_args = 0
-\s\sstmfd\s\ssp!, {r7, lr}
-\s\smov\s\sip, #0
-\s\sadd\s\sr7, sp, #0
-\s\smov\s\slr, r0
-\s\sb\s\sL9
+ @ args = 0, pretend = 0, frame = 0
+ @ frame_needed = 1, uses_anonymous_args = 0
+ stmfd sp!, {r7, lr}
+ mov ip, #0
+ add r7, sp, #0
+ mov lr, r0
+ b L9
L10:
-\s\sand\s\sr3, r1, #255
-\s\sadd\s\sip, ip, #1
-\s\sstrb\s\sr3, [lr], #1
+ and r3, r1, #255
+ add ip, ip, #1
+ strb r3, [lr], #1
L9:
-\s\scmp\s\sip, r2
-\s\sbne\s\sL10
-\s\sldmfd\s\ssp!, {r7, pc}
+ cmp ip, r2
+ bne L10
+ ldmfd sp!, {r7, pc}
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__moddi3)
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__moddi3)
ASM_PFX(__moddi3):
-\s\sstmfd\s\ssp!, {r4, r5, r7, lr}
-\s\smov\s\sr4, r1, asr #31
-\s\sadd\s\sr7, sp, #8
-\s\sstmfd\s\ssp!, {r10, r11}
-\s\smov\s\sr10, r3, asr #31
-\s\ssub\s\ssp, sp, #16
-\s\smov\s\sr5, r4
-\s\smov\s\sr11, r10
-\s\seor\s\sr0, r0, r4
-\s\seor\s\sr1, r1, r4
-\s\seor\s\sr2, r2, r10
-\s\seor\s\sr3, r3, r10
-\s\sadd\s\sip, sp, #8
-\s\ssubs\s\sr0, r0, r4
-\s\ssbc\s\sr1, r1, r5
-\s\ssubs\s\sr2, r2, r10
-\s\ssbc\s\sr3, r3, r11
-\s\sstr\s\sip, [sp, #0]
-\s\sbl\s\sASM_PFX(__udivmoddi4)
-\s\sldrd\s\sr0, [sp, #8]
-\s\seor\s\sr0, r0, r4
-\s\seor\s\sr1, r1, r4
-\s\ssubs\s\sr0, r0, r4
-\s\ssbc\s\sr1, r1, r5
-\s\ssub\s\ssp, r7, #16
-\s\sldmfd\s\ssp!, {r10, r11}
-\s\sldmfd\s\ssp!, {r4, r5, r7, pc}
+ stmfd sp!, {r4, r5, r7, lr}
+ mov r4, r1, asr #31
+ add r7, sp, #8
+ stmfd sp!, {r10, r11}
+ mov r10, r3, asr #31
+ sub sp, sp, #16
+ mov r5, r4
+ mov r11, r10
+ eor r0, r0, r4
+ eor r1, r1, r4
+ eor r2, r2, r10
+ eor r3, r3, r10
+ add ip, sp, #8
+ subs r0, r0, r4
+ sbc r1, r1, r5
+ subs r2, r2, r10
+ sbc r3, r3, r11
+ str ip, [sp, #0]
+ bl ASM_PFX(__udivmoddi4)
+ ldrd r0, [sp, #8]
+ eor r0, r0, r4
+ eor r1, r1, r4
+ subs r0, r0, r4
+ sbc r1, r1, r5
+ sub sp, r7, #16
+ ldmfd sp!, {r10, r11}
+ ldmfd sp!, {r4, r5, r7, pc}
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__modsi3)
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__modsi3)
ASM_PFX(__modsi3):
-\s\sstmfd\s\ssp!, {r4, r5, r7, lr}
-\s\sadd\s\sr7, sp, #8
-\s\smov\s\sr5, r0
-\s\smov\s\sr4, r1
-\s\sbl\s\s___divsi3
-\s\smul\s\sr0, r4, r0
-\s\srsb\s\sr0, r0, r5
-\s\sldmfd\s\ssp!, {r4, r5, r7, pc}
+ stmfd sp!, {r4, r5, r7, lr}
+ add r7, sp, #8
+ mov r5, r0
+ mov r4, r1
+ bl ___divsi3
+ mul r0, r4, r0
+ rsb r0, r0, r5
+ ldmfd sp!, {r4, r5, r7, pc}
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__muldi3)
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__muldi3)
ASM_PFX(__muldi3):
-\s\sstmfd\s\ssp!, {r4, r5, r6, r7, lr}
-\s\sadd\s\sr7, sp, #12
-\s\sstmfd\s\ssp!, {r8, r10, r11}
-\s\sldr\s\sr11, L4
-\s\smov\s\sr4, r0, lsr #16
-\s\sand\s\sr8, r0, r11
-\s\sand\s\sip, r2, r11
-\s\smul\s\slr, ip, r8
-\s\smul\s\sip, r4, ip
-\s\ssub\s\ssp, sp, #8
-\s\sadd\s\sr10, ip, lr, lsr #16
-\s\sand\s\sip, r10, r11
-\s\sand\s\slr, lr, r11
-\s\smov\s\sr6, r2, lsr #16
-\s\sstr\s\sr4, [sp, #4]
-\s\sadd\s\sr4, lr, ip, asl #16
-\s\smul\s\sip, r8, r6
-\s\smov\s\sr5, r10, lsr #16
-\s\sadd\s\sr10, ip, r4, lsr #16
-\s\sand\s\sip, r10, r11
-\s\sand\s\slr, r4, r11
-\s\sadd\s\sr4, lr, ip, asl #16
-\s\smul\s\sr0, r3, r0
-\s\sadd\s\sip, r5, r10, lsr #16
-\s\sldr\s\sr5, [sp, #4]
-\s\smla\s\sr0, r2, r1, r0
-\s\smla\s\sr5, r6, r5, ip
-\s\smov\s\sr10, r4
-\s\sadd\s\sr11, r0, r5
-\s\smov\s\sr1, r11
-\s\smov\s\sr0, r4
-\s\ssub\s\ssp, r7, #24
-\s\sldmfd\s\ssp!, {r8, r10, r11}
-\s\sldmfd\s\ssp!, {r4, r5, r6, r7, pc}
-\s\s.p2align 2
+ stmfd sp!, {r4, r5, r6, r7, lr}
+ add r7, sp, #12
+ stmfd sp!, {r8, r10, r11}
+ ldr r11, L4
+ mov r4, r0, lsr #16
+ and r8, r0, r11
+ and ip, r2, r11
+ mul lr, ip, r8
+ mul ip, r4, ip
+ sub sp, sp, #8
+ add r10, ip, lr, lsr #16
+ and ip, r10, r11
+ and lr, lr, r11
+ mov r6, r2, lsr #16
+ str r4, [sp, #4]
+ add r4, lr, ip, asl #16
+ mul ip, r8, r6
+ mov r5, r10, lsr #16
+ add r10, ip, r4, lsr #16
+ and ip, r10, r11
+ and lr, r4, r11
+ add r4, lr, ip, asl #16
+ mul r0, r3, r0
+ add ip, r5, r10, lsr #16
+ ldr r5, [sp, #4]
+ mla r0, r2, r1, r0
+ mla r5, r6, r5, ip
+ mov r10, r4
+ add r11, r0, r5
+ mov r1, r11
+ mov r0, r4
+ sub sp, r7, #24
+ ldmfd sp!, {r8, r10, r11}
+ ldmfd sp!, {r4, r5, r6, r7, pc}
+ .p2align 2
L5:
-\s\s.align 2
+ .align 2
L4:
-\s\s.long\s\s65535
+ .long 65535
//------------------------------------------------------------------------------
- EXPORT\s\s__ARM_ll_mullu
- EXPORT\s\s__aeabi_lmul
+ EXPORT __ARM_ll_mullu
+ EXPORT __aeabi_lmul
AREA Math, CODE, READONLY
- EXPORT\s\s__ARM_switch8
+ EXPORT __ARM_switch8
- AREA\s\sArmSwitch, CODE, READONLY
-\s\s
+ AREA ArmSwitch, CODE, READONLY
+
__ARM_switch8
-\s\sLDRB\s\s r12,[lr,#-1]
-\s\sCMP\s\s\s\s r3,r12
-\s\sLDRBCC\s\sr3,[lr,r3]
-\s\sLDRBCS\s\sr3,[lr,r12]
-\s\sADD\s\s\s\s r12,lr,r3,LSL #1
-\s\sBX\s\s\s\s r12
+ LDRB r12,[lr,#-1]
+ CMP r3,r12
+ LDRBCC r3,[lr,r3]
+ LDRBCS r3,[lr,r12]
+ ADD r12,lr,r3,LSL #1
+ BX r12
END
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__ucmpdi2)
-\s\s
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__ucmpdi2)
+
ASM_PFX(__ucmpdi2):
-\s\sstmfd\s\ssp!, {r4, r5, r8, lr}
-\s\scmp\s\sr1, r3
-\s\smov\s\sr8, r0
-\s\smov\s\sr4, r2
-\s\smov\s\sr5, r3
-\s\sbcc\s\sL2
-\s\sbhi\s\sL4
-\s\scmp\s\sr0, r2
-\s\sbcc\s\sL2
-\s\smovls\s\sr0, #1
-\s\sbls\s\sL8
-\s\sb\s\sL4
+ stmfd sp!, {r4, r5, r8, lr}
+ cmp r1, r3
+ mov r8, r0
+ mov r4, r2
+ mov r5, r3
+ bcc L2
+ bhi L4
+ cmp r0, r2
+ bcc L2
+ movls r0, #1
+ bls L8
+ b L4
L2:
-\s\smov\s\sr0, #0
-\s\sb\s\sL8
+ mov r0, #0
+ b L8
L4:
-\s\smov\s\sr0, #2
+ mov r0, #2
L8:
-\s\sldmfd\s\ssp!, {r4, r5, r8, pc}
+ ldmfd sp!, {r4, r5, r8, pc}
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__udivdi3)
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__udivdi3)
ASM_PFX(__udivdi3):
-\s\sstmfd\s\ssp!, {r7, lr}
-\s\sadd\s\sr7, sp, #0
-\s\ssub\s\ssp, sp, #8
-\s\smov\s\sip, #0
-\s\sstr\s\sip, [sp, #0]
-\s\sbl\s\sASM_PFX(__udivmoddi4)
-\s\ssub\s\ssp, r7, #0
-\s\sldmfd\s\ssp!, {r7, pc}
+ stmfd sp!, {r7, lr}
+ add r7, sp, #0
+ sub sp, sp, #8
+ mov ip, #0
+ str ip, [sp, #0]
+ bl ASM_PFX(__udivmoddi4)
+ sub sp, r7, #0
+ ldmfd sp!, {r7, pc}
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__udivmoddi4)
-\s\s
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__udivmoddi4)
+
ASM_PFX(__udivmoddi4):
-\s\sstmfd\s\ssp!, {r4, r5, r6, r7, lr}
-\s\sadd\s\sr7, sp, #12
-\s\sstmfd\s\ssp!, {r10, r11}
-\s\ssub\s\ssp, sp, #20
-\s\sstmia\s\ssp, {r2-r3}
-\s\sldr\s\sr6, [sp, #48]
-\s\sorrs\s\sr2, r2, r3
-\s\smov\s\sr10, r0
-\s\smov\s\sr11, r1
-\s\sbeq\s\sL2
-\s\ssubs\s\sip, r1, #0
-\s\sbne\s\sL4
-\s\scmp\s\sr3, #0
-\s\sbne\s\sL6
-\s\scmp\s\sr6, #0
-\s\sbeq\s\sL8
-\s\smov\s\sr1, r2
-\s\sbl\s\sASM_PFX(__umodsi3)
-\s\smov\s\sr1, #0
-\s\sstmia\s\sr6, {r0-r1}
+ stmfd sp!, {r4, r5, r6, r7, lr}
+ add r7, sp, #12
+ stmfd sp!, {r10, r11}
+ sub sp, sp, #20
+ stmia sp, {r2-r3}
+ ldr r6, [sp, #48]
+ orrs r2, r2, r3
+ mov r10, r0
+ mov r11, r1
+ beq L2
+ subs ip, r1, #0
+ bne L4
+ cmp r3, #0
+ bne L6
+ cmp r6, #0
+ beq L8
+ mov r1, r2
+ bl ASM_PFX(__umodsi3)
+ mov r1, #0
+ stmia r6, {r0-r1}
L8:
-\s\sldr\s\sr1, [sp, #0]
-\s\smov\s\sr0, r10
-\s\sb\s\sL45
+ ldr r1, [sp, #0]
+ mov r0, r10
+ b L45
L6:
-\s\scmp\s\sr6, #0
-\s\smovne\s\sr1, #0
-\s\sstmneia\s\sr6, {r0-r1}
-\s\sb\s\sL2
+ cmp r6, #0
+ movne r1, #0
+ stmneia r6, {r0-r1}
+ b L2
L4:
-\s\sldr\s\sr1, [sp, #0]
-\s\scmp\s\sr1, #0
-\s\sbne\s\sL12
-\s\sldr\s\sr2, [sp, #4]
-\s\scmp\s\sr2, #0
-\s\sbne\s\sL14
-\s\scmp\s\sr6, #0
-\s\sbeq\s\sL16
-\s\smov\s\sr1, r2
-\s\smov\s\sr0, r11
-\s\sbl\s\sASM_PFX(__umodsi3)
-\s\smov\s\sr1, #0
-\s\sstmia\s\sr6, {r0-r1}
+ ldr r1, [sp, #0]
+ cmp r1, #0
+ bne L12
+ ldr r2, [sp, #4]
+ cmp r2, #0
+ bne L14
+ cmp r6, #0
+ beq L16
+ mov r1, r2
+ mov r0, r11
+ bl ASM_PFX(__umodsi3)
+ mov r1, #0
+ stmia r6, {r0-r1}
L16:
-\s\sldr\s\sr1, [sp, #4]
-\s\smov\s\sr0, r11
+ ldr r1, [sp, #4]
+ mov r0, r11
L45:
-\s\sbl\s\sASM_PFX(__udivsi3)
+ bl ASM_PFX(__udivsi3)
L46:
-\s\smov\s\sr10, r0
-\s\smov\s\sr11, #0
-\s\sb\s\sL10
+ mov r10, r0
+ mov r11, #0
+ b L10
L14:
-\s\ssubs\s\sr1, r0, #0
-\s\sbne\s\sL18
-\s\scmp\s\sr6, #0
-\s\sbeq\s\sL16
-\s\sldr\s\sr1, [sp, #4]
-\s\smov\s\sr0, r11
-\s\sbl\s\sASM_PFX(__umodsi3)
-\s\smov\s\sr4, r10
-\s\smov\s\sr5, r0
-\s\sstmia\s\sr6, {r4-r5}
-\s\sb\s\sL16
+ subs r1, r0, #0
+ bne L18
+ cmp r6, #0
+ beq L16
+ ldr r1, [sp, #4]
+ mov r0, r11
+ bl ASM_PFX(__umodsi3)
+ mov r4, r10
+ mov r5, r0
+ stmia r6, {r4-r5}
+ b L16
L18:
-\s\ssub\s\sr3, r2, #1
-\s\stst\s\sr2, r3
-\s\sbne\s\sL22
-\s\scmp\s\sr6, #0
-\s\smovne\s\sr4, r0
-\s\sandne\s\sr5, ip, r3
-\s\sstmneia\s\sr6, {r4-r5}
+ sub r3, r2, #1
+ tst r2, r3
+ bne L22
+ cmp r6, #0
+ movne r4, r0
+ andne r5, ip, r3
+ stmneia r6, {r4-r5}
L24:
-\s\srsb\s\sr3, r2, #0
-\s\sand\s\sr3, r2, r3
-\s\sclz\s\sr3, r3
-\s\srsb\s\sr3, r3, #31
-\s\smov\s\sr0, ip, lsr r3
-\s\sb\s\sL46
+ rsb r3, r2, #0
+ and r3, r2, r3
+ clz r3, r3
+ rsb r3, r3, #31
+ mov r0, ip, lsr r3
+ b L46
L22:
-\s\sclz\s\sr2, r2
-\s\sclz\s\sr3, ip
-\s\srsb\s\sr3, r3, r2
-\s\scmp\s\sr3, #30
-\s\sbhi\s\sL48
-\s\srsb\s\sr2, r3, #31
-\s\sadd\s\slr, r3, #1
-\s\smov\s\sr3, r1, asl r2
-\s\sstr\s\sr3, [sp, #12]
-\s\smov\s\sr3, r1, lsr lr
-\s\sldr\s\sr0, [sp, #0]
-\s\smov\s\sr5, ip, lsr lr
-\s\sorr\s\sr4, r3, ip, asl r2
-\s\sstr\s\sr0, [sp, #8]
-\s\sb\s\sL29
+ clz r2, r2
+ clz r3, ip
+ rsb r3, r3, r2
+ cmp r3, #30
+ bhi L48
+ rsb r2, r3, #31
+ add lr, r3, #1
+ mov r3, r1, asl r2
+ str r3, [sp, #12]
+ mov r3, r1, lsr lr
+ ldr r0, [sp, #0]
+ mov r5, ip, lsr lr
+ orr r4, r3, ip, asl r2
+ str r0, [sp, #8]
+ b L29
L12:
-\s\sldr\s\sr3, [sp, #4]
-\s\scmp\s\sr3, #0
-\s\sbne\s\sL30
-\s\ssub\s\sr3, r1, #1
-\s\stst\s\sr1, r3
-\s\sbne\s\sL32
-\s\scmp\s\sr6, #0
-\s\sandne\s\sr3, r3, r0
-\s\smovne\s\sr2, r3
-\s\smovne\s\sr3, #0
-\s\sstmneia\s\sr6, {r2-r3}
+ ldr r3, [sp, #4]
+ cmp r3, #0
+ bne L30
+ sub r3, r1, #1
+ tst r1, r3
+ bne L32
+ cmp r6, #0
+ andne r3, r3, r0
+ movne r2, r3
+ movne r3, #0
+ stmneia r6, {r2-r3}
L34:
-\s\scmp\s\sr1, #1
-\s\sbeq\s\sL10
-\s\srsb\s\sr3, r1, #0
-\s\sand\s\sr3, r1, r3
-\s\sclz\s\sr3, r3
-\s\srsb\s\sr0, r3, #31
-\s\smov\s\sr1, ip, lsr r0
-\s\srsb\s\sr3, r0, #32
-\s\smov\s\sr0, r10, lsr r0
-\s\sorr\s\sip, r0, ip, asl r3
-\s\sstr\s\sr1, [sp, #12]
-\s\sstr\s\sip, [sp, #8]
-\s\sldrd\s\sr10, [sp, #8]
-\s\sb\s\sL10
+ cmp r1, #1
+ beq L10
+ rsb r3, r1, #0
+ and r3, r1, r3
+ clz r3, r3
+ rsb r0, r3, #31
+ mov r1, ip, lsr r0
+ rsb r3, r0, #32
+ mov r0, r10, lsr r0
+ orr ip, r0, ip, asl r3
+ str r1, [sp, #12]
+ str ip, [sp, #8]
+ ldrd r10, [sp, #8]
+ b L10
L32:
-\s\sclz\s\sr2, r1
-\s\sclz\s\sr3, ip
-\s\srsb\s\sr3, r3, r2
-\s\srsb\s\sr4, r3, #31
-\s\smov\s\sr2, r0, asl r4
-\s\smvn\s\sr1, r3
-\s\sand\s\sr2, r2, r1, asr #31
-\s\sadd\s\slr, r3, #33
-\s\sstr\s\sr2, [sp, #8]
-\s\sadd\s\sr2, r3, #1
-\s\smov\s\sr3, r3, asr #31
-\s\sand\s\sr0, r3, r0, asl r1
-\s\smov\s\sr3, r10, lsr r2
-\s\sorr\s\sr3, r3, ip, asl r4
-\s\sand\s\sr3, r3, r1, asr #31
-\s\sorr\s\sr0, r0, r3
-\s\smov\s\sr3, ip, lsr lr
-\s\sstr\s\sr0, [sp, #12]
-\s\smov\s\sr0, r10, lsr lr
-\s\sand\s\sr5, r3, r2, asr #31
-\s\srsb\s\sr3, lr, #31
-\s\smov\s\sr3, r3, asr #31
-\s\sorr\s\sr0, r0, ip, asl r1
-\s\sand\s\sr3, r3, ip, lsr r2
-\s\sand\s\sr0, r0, r2, asr #31
-\s\sorr\s\sr4, r3, r0
-\s\sb\s\sL29
+ clz r2, r1
+ clz r3, ip
+ rsb r3, r3, r2
+ rsb r4, r3, #31
+ mov r2, r0, asl r4
+ mvn r1, r3
+ and r2, r2, r1, asr #31
+ add lr, r3, #33
+ str r2, [sp, #8]
+ add r2, r3, #1
+ mov r3, r3, asr #31
+ and r0, r3, r0, asl r1
+ mov r3, r10, lsr r2
+ orr r3, r3, ip, asl r4
+ and r3, r3, r1, asr #31
+ orr r0, r0, r3
+ mov r3, ip, lsr lr
+ str r0, [sp, #12]
+ mov r0, r10, lsr lr
+ and r5, r3, r2, asr #31
+ rsb r3, lr, #31
+ mov r3, r3, asr #31
+ orr r0, r0, ip, asl r1
+ and r3, r3, ip, lsr r2
+ and r0, r0, r2, asr #31
+ orr r4, r3, r0
+ b L29
L30:
-\s\sclz\s\sr2, r3
-\s\sclz\s\sr3, ip
-\s\srsb\s\sr3, r3, r2
-\s\scmp\s\sr3, #31
-\s\sbls\s\sL37
+ clz r2, r3
+ clz r3, ip
+ rsb r3, r3, r2
+ cmp r3, #31
+ bls L37
L48:
-\s\scmp\s\sr6, #0
-\s\sstmneia\s\sr6, {r10-r11}
-\s\sb\s\sL2
+ cmp r6, #0
+ stmneia r6, {r10-r11}
+ b L2
L37:
-\s\srsb\s\sr1, r3, #31
-\s\smov\s\sr0, r0, asl r1
-\s\sadd\s\slr, r3, #1
-\s\smov\s\sr2, #0
-\s\sstr\s\sr0, [sp, #12]
-\s\smov\s\sr0, r10, lsr lr
-\s\sstr\s\sr2, [sp, #8]
-\s\ssub\s\sr2, r3, #31
-\s\sand\s\sr0, r0, r2, asr #31
-\s\smov\s\sr3, ip, lsr lr
-\s\sorr\s\sr4, r0, ip, asl r1
-\s\sand\s\sr5, r3, r2, asr #31
+ rsb r1, r3, #31
+ mov r0, r0, asl r1
+ add lr, r3, #1
+ mov r2, #0
+ str r0, [sp, #12]
+ mov r0, r10, lsr lr
+ str r2, [sp, #8]
+ sub r2, r3, #31
+ and r0, r0, r2, asr #31
+ mov r3, ip, lsr lr
+ orr r4, r0, ip, asl r1
+ and r5, r3, r2, asr #31
L29:
-\s\smov\s\sip, #0
-\s\smov\s\sr10, ip
-\s\sb\s\sL40
+ mov ip, #0
+ mov r10, ip
+ b L40
L41:
-\s\sldr\s\sr1, [sp, #12]
-\s\sldr\s\sr2, [sp, #8]
-\s\smov\s\sr3, r4, lsr #31
-\s\sorr\s\sr5, r3, r5, asl #1
-\s\smov\s\sr3, r1, lsr #31
-\s\sorr\s\sr4, r3, r4, asl #1
-\s\smov\s\sr3, r2, lsr #31
-\s\sorr\s\sr0, r3, r1, asl #1
-\s\sorr\s\sr1, ip, r2, asl #1
-\s\sldmia\s\ssp, {r2-r3}
-\s\sstr\s\sr0, [sp, #12]
-\s\ssubs\s\sr2, r2, r4
-\s\ssbc\s\sr3, r3, r5
-\s\sstr\s\sr1, [sp, #8]
-\s\ssubs\s\sr0, r2, #1
-\s\ssbc\s\sr1, r3, #0
-\s\smov\s\sr2, r1, asr #31
-\s\sldmia\s\ssp, {r0-r1}
-\s\smov\s\sr3, r2
-\s\sand\s\sip, r2, #1
-\s\sand\s\sr3, r3, r1
-\s\sand\s\sr2, r2, r0
-\s\ssubs\s\sr4, r4, r2
-\s\ssbc\s\sr5, r5, r3
-\s\sadd\s\sr10, r10, #1
+ ldr r1, [sp, #12]
+ ldr r2, [sp, #8]
+ mov r3, r4, lsr #31
+ orr r5, r3, r5, asl #1
+ mov r3, r1, lsr #31
+ orr r4, r3, r4, asl #1
+ mov r3, r2, lsr #31
+ orr r0, r3, r1, asl #1
+ orr r1, ip, r2, asl #1
+ ldmia sp, {r2-r3}
+ str r0, [sp, #12]
+ subs r2, r2, r4
+ sbc r3, r3, r5
+ str r1, [sp, #8]
+ subs r0, r2, #1
+ sbc r1, r3, #0
+ mov r2, r1, asr #31
+ ldmia sp, {r0-r1}
+ mov r3, r2
+ and ip, r2, #1
+ and r3, r3, r1
+ and r2, r2, r0
+ subs r4, r4, r2
+ sbc r5, r5, r3
+ add r10, r10, #1
L40:
-\s\scmp\s\sr10, lr
-\s\sbne\s\sL41
-\s\sldrd\s\sr0, [sp, #8]
-\s\sadds\s\sr0, r0, r0
-\s\sadc\s\sr1, r1, r1
-\s\scmp\s\sr6, #0
-\s\sorr\s\sr10, r0, ip
-\s\smov\s\sr11, r1
-\s\sstmneia\s\sr6, {r4-r5}
-\s\sb\s\sL10
+ cmp r10, lr
+ bne L41
+ ldrd r0, [sp, #8]
+ adds r0, r0, r0
+ adc r1, r1, r1
+ cmp r6, #0
+ orr r10, r0, ip
+ mov r11, r1
+ stmneia r6, {r4-r5}
+ b L10
L2:
-\s\smov\s\sr10, #0
-\s\smov\s\sr11, #0
+ mov r10, #0
+ mov r11, #0
L10:
-\s\smov\s\sr0, r10
-\s\smov\s\sr1, r11
-\s\ssub\s\ssp, r7, #20
-\s\sldmfd\s\ssp!, {r10, r11}
-\s\sldmfd\s\ssp!, {r4, r5, r6, r7, pc}
+ mov r0, r10
+ mov r1, r11
+ sub sp, r7, #20
+ ldmfd sp!, {r10, r11}
+ ldmfd sp!, {r4, r5, r6, r7, pc}
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__udivsi3)
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__udivsi3)
ASM_PFX(__udivsi3):
-\s\scmp\s\sr1, #0
-\s\scmpne\s\sr0, #0
-\s\sstmfd\s\ssp!, {r4, r5, r7, lr}
-\s\sadd\s\sr7, sp, #8
-\s\sbeq\s\sL2
-\s\sclz\s\sr2, r1
-\s\sclz\s\sr3, r0
-\s\srsb\s\sr3, r3, r2
-\s\scmp\s\sr3, #31
-\s\sbhi\s\sL2
-\s\sldmeqfd\s\ssp!, {r4, r5, r7, pc}
-\s\sadd\s\sr5, r3, #1
-\s\srsb\s\sr3, r3, #31
-\s\smov\s\slr, #0
-\s\smov\s\sr2, r0, asl r3
-\s\smov\s\sip, r0, lsr r5
-\s\smov\s\sr4, lr
-\s\sb\s\sL8
+ cmp r1, #0
+ cmpne r0, #0
+ stmfd sp!, {r4, r5, r7, lr}
+ add r7, sp, #8
+ beq L2
+ clz r2, r1
+ clz r3, r0
+ rsb r3, r3, r2
+ cmp r3, #31
+ bhi L2
+ ldmeqfd sp!, {r4, r5, r7, pc}
+ add r5, r3, #1
+ rsb r3, r3, #31
+ mov lr, #0
+ mov r2, r0, asl r3
+ mov ip, r0, lsr r5
+ mov r4, lr
+ b L8
L9:
-\s\smov\s\sr0, r2, lsr #31
-\s\sorr\s\sip, r0, ip, asl #1
-\s\sorr\s\sr2, r3, lr
-\s\srsb\s\sr3, ip, r1
-\s\ssub\s\sr3, r3, #1
-\s\sand\s\sr0, r1, r3, asr #31
-\s\smov\s\slr, r3, lsr #31
-\s\srsb\s\sip, r0, ip
-\s\sadd\s\sr4, r4, #1
+ mov r0, r2, lsr #31
+ orr ip, r0, ip, asl #1
+ orr r2, r3, lr
+ rsb r3, ip, r1
+ sub r3, r3, #1
+ and r0, r1, r3, asr #31
+ mov lr, r3, lsr #31
+ rsb ip, r0, ip
+ add r4, r4, #1
L8:
-\s\scmp\s\sr4, r5
-\s\smov\s\sr3, r2, asl #1
-\s\sbne\s\sL9
-\s\sorr\s\sr0, r3, lr
-\s\sldmfd\s\ssp!, {r4, r5, r7, pc}
+ cmp r4, r5
+ mov r3, r2, asl #1
+ bne L9
+ orr r0, r3, lr
+ ldmfd sp!, {r4, r5, r7, pc}
L2:
-\s\smov\s\sr0, #0
-\s\sldmfd\s\ssp!, {r4, r5, r7, pc}
+ mov r0, #0
+ ldmfd sp!, {r4, r5, r7, pc}
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__aeabi_uldivmod)
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__aeabi_uldivmod)
//
//UINT64
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__umoddi3)
-\s\s
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__umoddi3)
+
ASM_PFX(__umoddi3):
-\s\sstmfd\s\ssp!, {r7, lr}
-\s\sadd\s\sr7, sp, #0
-\s\ssub\s\ssp, sp, #16
-\s\sadd\s\sip, sp, #8
-\s\sstr\s\sip, [sp, #0]
-\s\sbl\s\sASM_PFX(__udivmoddi4)
-\s\sldrd\s\sr0, [sp, #8]
-\s\ssub\s\ssp, r7, #0
-\s\sldmfd\s\ssp!, {r7, pc}
+ stmfd sp!, {r7, lr}
+ add r7, sp, #0
+ sub sp, sp, #16
+ add ip, sp, #8
+ str ip, [sp, #0]
+ bl ASM_PFX(__udivmoddi4)
+ ldrd r0, [sp, #8]
+ sub sp, r7, #0
+ ldmfd sp!, {r7, pc}
#
#------------------------------------------------------------------------------
-\s\s.text
-\s\s.align 2
-\s\sGCC_ASM_EXPORT(__umodsi3)
-\s\s
+ .text
+ .align 2
+ GCC_ASM_EXPORT(__umodsi3)
+
ASM_PFX(__umodsi3):
-\s\sstmfd\s\ssp!, {r4, r5, r7, lr}
-\s\sadd\s\sr7, sp, #8
-\s\smov\s\sr5, r0
-\s\smov\s\sr4, r1
-\s\sbl \s\sASM_PFX(__udivsi3)
-\s\smul\s\sr0, r4, r0
-\s\srsb\s\sr0, r0, r5
-\s\sldmfd\s\ssp!, {r4, r5, r7, pc}
+ stmfd sp!, {r4, r5, r7, lr}
+ add r7, sp, #8
+ mov r5, r0
+ mov r4, r1
+ bl ASM_PFX(__udivsi3)
+ mul r0, r4, r0
+ rsb r0, r0, r5
+ ldmfd sp!, {r4, r5, r7, pc}
\r
#define MMC_OCR_POWERUP 0x80000000\r
\r
-#define MMC_CSD_GET_CCC(Response)\s\s\s\s(Response[1] >> 20)\r
-#define MMC_CSD_GET_TRANSPEED(Response)\s\s\s\s(Response[0] & 0xFF)\r
-#define MMC_CSD_GET_READBLLEN(Response)\s\s\s\s((Response[1] >> 16) & 0xF)\r
-#define MMC_CSD_GET_WRITEBLLEN(Response)\s\s((Response[3] >> 22) & 0xF)\r
-#define MMC_CSD_GET_FILEFORMAT(Response)\s\s((Response[3] >> 10) & 0x3)\r
-#define MMC_CSD_GET_FILEFORMATGRP(Response)\s\s((Response[3] >> 15) & 0x1)\r
+#define MMC_CSD_GET_CCC(Response) (Response[1] >> 20)\r
+#define MMC_CSD_GET_TRANSPEED(Response) (Response[0] & 0xFF)\r
+#define MMC_CSD_GET_READBLLEN(Response) ((Response[1] >> 16) & 0xF)\r
+#define MMC_CSD_GET_WRITEBLLEN(Response) ((Response[3] >> 22) & 0xF)\r
+#define MMC_CSD_GET_FILEFORMAT(Response) ((Response[3] >> 10) & 0x3)\r
+#define MMC_CSD_GET_FILEFORMATGRP(Response) ((Response[3] >> 15) & 0x1)\r
#define MMC_CSD_GET_DEVICESIZE(csd) (((Response[2] >> 30) & 0x3) | ((Response[1] & 0x3FF) << 2))\r
#define MMC_CSD_GET_DEVICESIZEMULT(csd) ((Response[2] >> 15) & 0x7)\r
\r
\r
\r
typedef struct {\r
- UINTN tv_sec; /* seconds */\r
- UINTN tv_nsec; /* and nanoseconds */\r
+ UINTN tv_sec; /* seconds */\r
+ UINTN tv_nsec; /* and nanoseconds */\r
} EFI_timespec;\r
\r
\r
\r
typedef struct stat_fix { \\r
- dev_t st_dev; /* [XSI] ID of device containing file */ \r
- mode_t st_mode; /* [XSI] Mode of file (see below) */ \r
- nlink_t st_nlink; /* [XSI] Number of hard links */ \r
- __darwin_ino64_t st_ino; /* [XSI] File serial number */ \r
- uid_t st_uid; /* [XSI] User ID of the file */ \r
- gid_t st_gid; /* [XSI] Group ID of the file */ \r
- dev_t st_rdev; /* [XSI] Device ID */ \r
+ dev_t st_dev; /* [XSI] ID of device containing file */ \r
+ mode_t st_mode; /* [XSI] Mode of file (see below) */ \r
+ nlink_t st_nlink; /* [XSI] Number of hard links */ \r
+ __darwin_ino64_t st_ino; /* [XSI] File serial number */ \r
+ uid_t st_uid; /* [XSI] User ID of the file */ \r
+ gid_t st_gid; /* [XSI] Group ID of the file */ \r
+ dev_t st_rdev; /* [XSI] Device ID */ \r
\r
// clang for X64 ABI follows Windows and a long is 32-bits\r
// this breaks system inlcude files so that is why we need\r
EFI_timespec st_ctimespec;\r
EFI_timespec st_birthtimespec;\r
\r
- off_t st_size; /* [XSI] file size, in bytes */ \r
- blkcnt_t st_blocks; /* [XSI] blocks allocated for file */ \r
- blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */ \r
- __uint32_t st_flags; /* user defined flags for file */ \r
- __uint32_t st_gen; /* file generation number */ \r
- __int32_t st_lspare; /* RESERVED: DO NOT USE! */ \r
- __int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */ \r
+ off_t st_size; /* [XSI] file size, in bytes */ \r
+ blkcnt_t st_blocks; /* [XSI] blocks allocated for file */ \r
+ blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */ \r
+ __uint32_t st_flags; /* user defined flags for file */ \r
+ __uint32_t st_gen; /* file generation number */ \r
+ __int32_t st_lspare; /* RESERVED: DO NOT USE! */ \r
+ __int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */ \r
} STAT_FIX;\r
\r
#else /* !__DARWIN_64_BIT_INO_T */\r
\r
typedef struct stat_fix {\r
- dev_t st_dev; /* [XSI] ID of device containing file */\r
- ino_t st_ino; /* [XSI] File serial number */\r
- mode_t st_mode; /* [XSI] Mode of file (see below) */\r
- nlink_t st_nlink; /* [XSI] Number of hard links */\r
- uid_t st_uid; /* [XSI] User ID of the file */\r
- gid_t st_gid; /* [XSI] Group ID of the file */\r
- dev_t st_rdev; /* [XSI] Device ID */\r
+ dev_t st_dev; /* [XSI] ID of device containing file */\r
+ ino_t st_ino; /* [XSI] File serial number */\r
+ mode_t st_mode; /* [XSI] Mode of file (see below) */\r
+ nlink_t st_nlink; /* [XSI] Number of hard links */\r
+ uid_t st_uid; /* [XSI] User ID of the file */\r
+ gid_t st_gid; /* [XSI] Group ID of the file */\r
+ dev_t st_rdev; /* [XSI] Device ID */\r
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)\r
- struct timespec st_atimespec; /* time of last access */\r
- struct timespec st_mtimespec; /* time of last data modification */\r
- struct timespec st_ctimespec; /* time of last status change */\r
+ struct timespec st_atimespec; /* time of last access */\r
+ struct timespec st_mtimespec; /* time of last data modification */\r
+ struct timespec st_ctimespec; /* time of last status change */\r
#else\r
- time_t st_atime; /* [XSI] Time of last access */\r
- long st_atimensec; /* nsec of last access */\r
- time_t st_mtime; /* [XSI] Last data modification time */\r
- long st_mtimensec; /* last data modification nsec */\r
- time_t st_ctime; /* [XSI] Time of last status change */\r
- long st_ctimensec; /* nsec of last status change */\r
+ time_t st_atime; /* [XSI] Time of last access */\r
+ long st_atimensec; /* nsec of last access */\r
+ time_t st_mtime; /* [XSI] Last data modification time */\r
+ long st_mtimensec; /* last data modification nsec */\r
+ time_t st_ctime; /* [XSI] Time of last status change */\r
+ long st_ctimensec; /* nsec of last status change */\r
#endif\r
- off_t st_size; /* [XSI] file size, in bytes */\r
- blkcnt_t st_blocks; /* [XSI] blocks allocated for file */\r
- blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */\r
- __uint32_t st_flags; /* user defined flags for file */\r
- __uint32_t st_gen; /* file generation number */\r
- __int32_t st_lspare; /* RESERVED: DO NOT USE! */\r
- __int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */\r
+ off_t st_size; /* [XSI] file size, in bytes */\r
+ blkcnt_t st_blocks; /* [XSI] blocks allocated for file */\r
+ blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */\r
+ __uint32_t st_flags; /* user defined flags for file */\r
+ __uint32_t st_gen; /* file generation number */\r
+ __int32_t st_lspare; /* RESERVED: DO NOT USE! */\r
+ __int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */\r
} STAT_FIX;\r
\r
#endif\r
typedef
EFI_STATUS
(EFIAPI *UnixUgaCreate)(struct _EFI_UNIX_UGA_IO_PROTOCOL **UgaIo,
- CONST CHAR16 *Title);
+ CONST CHAR16 *Title);
typedef
int
typedef
int
(EFIAPI *UnixTcsetattr) (int __fd, int __optional_actions,
- __const struct termios *__termios_p);
+ __const struct termios *__termios_p);
//
UINT64 Signature;
UnixSleep Sleep;
- UnixExit Exit;
+ UnixExit Exit;
UnixSetTimer SetTimer;
- UnixGetLocalTime GetLocalTime;
+ UnixGetLocalTime GetLocalTime;
UnixGmTime GmTime;
UnixGetTimeZone GetTimeZone;
UnixGetDayLight GetDayLight;
- UnixPoll Poll;
+ UnixPoll Poll;
UnixRead Read;
UnixWrite Write;
UnixGetenv Getenv;
UnixChmod Chmod;
UnixUTime UTime;
UnixTcflush Tcflush;
- UnixUgaCreate UgaCreate;
+ UnixUgaCreate UgaCreate;
UnixPerror Perror;
UnixIoCtl IoCtl;
UnixFcntl Fcntl;
typedef struct {
- UINTN SourceX;
- UINTN SourceY;
- UINTN DestinationX;
- UINTN DestinationY;
- UINTN Width;
- UINTN Height;
- UINTN Delta;
+ UINTN SourceX;
+ UINTN SourceY;
+ UINTN DestinationX;
+ UINTN DestinationY;
+ UINTN Width;
+ UINTN Height;
+ UINTN Delta;
} UGA_BLT_ARGS;
typedef
EFI_STATUS
(EFIAPI *UGABlt)(
IN EFI_UNIX_UGA_IO_PROTOCOL *Uga,
- IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
- IN EFI_UGA_BLT_OPERATION BltOperation,
- IN UGA_BLT_ARGS *Args
- );
+ IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
+ IN EFI_UGA_BLT_OPERATION BltOperation,
+ IN UGA_BLT_ARGS *Args
+ );
typedef
BOOLEAN
mStdOut,\r
Buffer,\r
CharCount\r
- );\r
+ );\r
\r
return EFI_SUCCESS;\r
\r
IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- EFI_HOB_GUID_TYPE *GuidHob;\r
+ EFI_HOB_GUID_TYPE *GuidHob;\r
\r
//\r
// Retrieve UnixThunkProtocol from GUID'ed HOB\r
\r
--*/\r
{\r
- PEI_UNIX_THUNK_PPI *UnixThunkPpi;\r
+ PEI_UNIX_THUNK_PPI *UnixThunkPpi;\r
EFI_STATUS Status;\r
EFI_UNIX_THUNK_PROTOCOL *Unix;\r
\r
mStdOut,\r
Buffer,\r
CharCount\r
- );\r
+ );\r
\r
return EFI_SUCCESS;\r
\r
UnixPeCoffGetUnixThunkStucture (\r
)\r
{\r
- PEI_UNIX_THUNK_PPI *UnixThunkPpi;\r
+ PEI_UNIX_THUNK_PPI *UnixThunkPpi;\r
EFI_STATUS Status;\r
\r
\r
EFI_UNIX_UGA_IO_PROTOCOL *UgaIo,\r
IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,\r
IN EFI_UGA_BLT_OPERATION BltOperation,\r
- IN UGA_BLT_ARGS *Args\r
+ IN UGA_BLT_ARGS *Args\r
)\r
{\r
return GasketUintnUintnUintnUintn (UgaBlt, (UINTN)UgaIo, (UINTN)BltBuffer, (UINTN)BltOperation, (UINTN)Args);\r
\r
.globl _ReverseGasketUint64\r
_ReverseGasketUint64:\r
- pushl %ebp\r
- movl %esp, %ebp\r
- subl $40, %esp\r
- movl 12(%ebp), %eax\r
- movl %eax, -16(%ebp)\r
- movl 16(%ebp), %eax\r
- movl %eax, -12(%ebp)\r
- movl -16(%ebp), %eax\r
- movl -12(%ebp), %edx\r
- movl %eax, (%esp)\r
- movl %edx, 4(%esp)\r
- movl 8(%ebp), %eax\r
- call *%eax\r
- leave\r
- ret\r
+ pushl %ebp\r
+ movl %esp, %ebp\r
+ subl $40, %esp\r
+ movl 12(%ebp), %eax\r
+ movl %eax, -16(%ebp)\r
+ movl 16(%ebp), %eax\r
+ movl %eax, -12(%ebp)\r
+ movl -16(%ebp), %eax\r
+ movl -12(%ebp), %edx\r
+ movl %eax, (%esp)\r
+ movl %edx, 4(%esp)\r
+ movl 8(%ebp), %eax\r
+ call *%eax\r
+ leave\r
+ ret\r
\r
\r
.globl _ReverseGasketUint64Uint64\r
\r
.globl _GasketSecUnixPeiLoadFile\r
_GasketSecUnixPeiLoadFile:\r
- jmp _SecUnixPeiLoadFile\r
+ jmp _SecUnixPeiLoadFile\r
\r
\r
.globl _GasketSecUnixPeiAutoScan\r
_GasketSecUnixPeiAutoScan:\r
- jmp _SecUnixPeiAutoScan\r
+ jmp _SecUnixPeiAutoScan\r
\r
\r
.globl _GasketSecUnixUnixThunkAddress\r
_GasketSecUnixUnixThunkAddress:\r
- jmp _SecUnixUnixThunkAddress\r
+ jmp _SecUnixUnixThunkAddress\r
\r
\r
.globl _GasketSecPeiReportStatusCode\r
_GasketSecPeiReportStatusCode:\r
- jmp _SecPeiReportStatusCode\r
+ jmp _SecPeiReportStatusCode\r
\r
\r
.globl _GasketSecUnixFdAddress\r
_GasketSecUnixFdAddress:\r
- jmp _SecUnixFdAddress\r
+ jmp _SecUnixFdAddress\r
\r
\r
.globl _GasketSecTemporaryRamSupport\r
_GasketSecTemporaryRamSupport:\r
- jmp _SecTemporaryRamSupport\r
+ jmp _SecTemporaryRamSupport\r
\r
#endif\r
// Open the FD and remmeber where it got mapped into our processes address space
//
Status = MapFile (
- FileName,
- &gFdInfo[Index].Address,
- &gFdInfo[Index].Size
- );
+ FileName,
+ &gFdInfo[Index].Address,
+ &gFdInfo[Index].Size
+ );
if (EFI_ERROR (Status)) {
printf ("ERROR : Can not open Firmware Device File %s (%x). Exiting.\n", FileName, (unsigned int)Status);
exit (1);
}
printf (" FD loaded from %s at 0x%08lx",
- FileName, (unsigned long)gFdInfo[Index].Address);
+ FileName, (unsigned long)gFdInfo[Index].Address);
if (PeiCoreFile == NULL) {
//
/* Read entry address. */
lseek (fd, FileSize - 0x20, SEEK_SET);
if (read (fd, &EntryAddress, 4) != 4)
- {
- close (fd);
- return EFI_DEVICE_ERROR;
- }
+ {
+ close (fd);
+ return EFI_DEVICE_ERROR;
+ }
}
#endif
*MemoryBase = 0;
res = MapMemory(0, gSystemMemory[Index].Size,
- PROT_READ | PROT_WRITE | PROT_EXEC,
- MAP_PRIVATE | MAP_ANONYMOUS);
+ PROT_READ | PROT_WRITE | PROT_EXEC,
+ MAP_PRIVATE | MAP_ANONYMOUS);
if (res == MAP_FAILED)
return EFI_DEVICE_ERROR;
*MemorySize = gSystemMemory[Index].Size;
EFI_UNIX_UGA_IO_PROTOCOL UgaIo;
Display *display;
- int screen; /* values for window_size in main */
+ int screen; /* values for window_size in main */
Window win;
GC gc;
Visual *visual;
if ( ev->xmotion.x != drv->previous_x )
{
drv->pointer_state.RelativeMovementX += ( ev->xmotion.x - drv->previous_x );
- drv->previous_x = ev->xmotion.x;
- drv->pointer_state_changed = 1;
+ drv->previous_x = ev->xmotion.x;
+ drv->pointer_state_changed = 1;
}
if ( ev->xmotion.y != drv->previous_y )
{
drv->pointer_state.RelativeMovementY += ( ev->xmotion.y - drv->previous_y );
drv->previous_y = ev->xmotion.y;
- drv->pointer_state_changed = 1;
+ drv->pointer_state_changed = 1;
}
drv->pointer_state.RelativeMovementZ = 0;
if ( ev->xbutton.button == Button1 )
{
drv->pointer_state_changed = ( drv->pointer_state.LeftButton != Pressed );
- drv->pointer_state.LeftButton = Pressed;
+ drv->pointer_state.LeftButton = Pressed;
}
if ( ev->xbutton.button == Button2 )
{
drv->pointer_state_changed = ( drv->pointer_state.RightButton != Pressed );
- drv->pointer_state.RightButton = Pressed;
+ drv->pointer_state.RightButton = Pressed;
}
}
break;
case ButtonPress:
handleMouseDown(drv, ev, TRUE);
- break;
+ break;
case ButtonRelease:
handleMouseDown(drv, ev, FALSE);
- break;
+ break;
#if 0
case DestroyNotify:
XCloseDisplay (drv->display);
# to get the correct binding (does not work from assembly). So we have 4 functions
# that do an indirect call, while the others call POSIX APIs directly
#
-# movq _gUnixRmDir@GOTPCREL(%rip), %rax
+# movq _gUnixRmDir@GOTPCREL(%rip), %rax
#
#
# UNIX Arg passing: RCX, RDX, R8, R9
// EFI ABI code will sub 40 (0x28) from %rsp before calling a function
// This is the 32 (0x20) byte to spill registers and 8 bytes to align stack on 16 byte boundry.
//
- .text
+ .text
// 32 byte shadow to spill rcx-r9, 8 bytes to align stack on 16 byte boundry
// Any call with 0 - 4 arguments allocates 40 bytes on the stack.
- .text
+ .text
ASM_GLOBAL ASM_PFX(Gasketrmdir)
ASM_PFX(Gasketrmdir):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
- pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
- pushq %rdi
+ pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
+ pushq %rdi
movq %rcx, %rdi // Swizzle args
- movq ASM_PFX(gUnixRmDir)@GOTPCREL(%rip), %rax // Get function name mangled by C
- movq (%rax), %rax
- call *%rax
+ movq ASM_PFX(gUnixRmDir)@GOTPCREL(%rip), %rax // Get function name mangled by C
+ movq (%rax), %rax
+ call *%rax
- popq %rdi // restore state
- popq %rsi
- popq %rbp
- ret
+ popq %rdi // restore state
+ popq %rsi
+ popq %rbp
+ ret
ASM_GLOBAL ASM_PFX(Gasketopendir)
ASM_PFX(Gasketopendir):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
- pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
- pushq %rdi
+ pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
+ pushq %rdi
movq %rcx, %rdi // Swizzle args
- movq ASM_PFX(gUnixOpenDir)@GOTPCREL(%rip), %rax // Get function name mangled by C
- movq (%rax), %rax
- call *%rax
-
- popq %rdi // restore state
- popq %rsi
- popq %rbp
+ movq ASM_PFX(gUnixOpenDir)@GOTPCREL(%rip), %rax // Get function name mangled by C
+ movq (%rax), %rax
+ call *%rax
+
+ popq %rdi // restore state
+ popq %rsi
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketstat)
ASM_PFX(Gasketstat):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
- pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
- pushq %rdi
+ pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
+ pushq %rdi
movq %rcx, %rdi // Swizzle args
movq %rdx, %rsi
- movq ASM_PFX(gUnixStat)@GOTPCREL(%rip), %rax // Get function name mangled by C
- movq (%rax), %rax
- call *%rax
-
+ movq ASM_PFX(gUnixStat)@GOTPCREL(%rip), %rax // Get function name mangled by C
+ movq (%rax), %rax
+ call *%rax
+
- popq %rdi // restore state
- popq %rsi
- popq %rbp
+ popq %rdi // restore state
+ popq %rsi
+ popq %rbp
ret
-
-
+
+
ASM_GLOBAL ASM_PFX(Gasketstatfs)
ASM_PFX(Gasketstatfs):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
- pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
- pushq %rdi
+ pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
+ pushq %rdi
movq %rcx, %rdi // Swizzle args
movq %rdx, %rsi
- movq ASM_PFX(gUnixStatFs)@GOTPCREL(%rip), %rax // Get function name mangled by C
- movq (%rax), %rax
- call *%rax
-
- popq %rdi // restore state
- popq %rsi
- popq %rbp
+ movq ASM_PFX(gUnixStatFs)@GOTPCREL(%rip), %rax // Get function name mangled by C
+ movq (%rax), %rax
+ call *%rax
+
+ popq %rdi // restore state
+ popq %rsi
+ popq %rbp
ret
-
+
ASM_GLOBAL ASM_PFX(Gasketrewinddir)
ASM_PFX(Gasketrewinddir):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
- pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
- pushq %rdi
+ pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
+ pushq %rdi
movq %rcx, %rdi // Swizzle args
- movq ASM_PFX(gUnixRewinddir)@GOTPCREL(%rip), %rax // Get function name mangled by C
- movq (%rax), %rax
- call *%rax
-
- popq %rdi // restore state
- popq %rsi
- popq %rbp
+ movq ASM_PFX(gUnixRewinddir)@GOTPCREL(%rip), %rax // Get function name mangled by C
+ movq (%rax), %rax
+ call *%rax
+
+ popq %rdi // restore state
+ popq %rsi
+ popq %rbp
ret
-
+
ASM_GLOBAL ASM_PFX(Gasketreaddir)
ASM_PFX(Gasketreaddir):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
- pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
- pushq %rdi
+ pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
+ pushq %rdi
movq %rcx, %rdi // Swizzle args
- movq ASM_PFX(gUnixReaddir)@GOTPCREL(%rip), %rax // Get function name mangled by C
- movq (%rax), %rax
- call *%rax
-
- popq %rdi // restore state
- popq %rsi
- popq %rbp
+ movq ASM_PFX(gUnixReaddir)@GOTPCREL(%rip), %rax // Get function name mangled by C
+ movq (%rax), %rax
+ call *%rax
+
+ popq %rdi // restore state
+ popq %rsi
+ popq %rbp
ret
-
+
ASM_GLOBAL ASM_PFX(GasketmsSleep)
ASM_PFX(GasketmsSleep):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
- pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
- pushq %rdi
+ pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
+ pushq %rdi
movq %rcx, %rdi // Swizzle args
- call ASM_PFX(msSleep)
-
- popq %rdi // restore state
- popq %rsi
- popq %rbp
+ call ASM_PFX(msSleep)
+
+ popq %rdi // restore state
+ popq %rsi
+ popq %rbp
ret
-
-
+
+
ASM_GLOBAL ASM_PFX(Gasketexit)
ASM_PFX(Gasketexit):
movq %rcx, %rdi // Swizzle args
- call ASM_PFX(exit) // Less to do as we will never return to EFI ABI world
+ call ASM_PFX(exit) // Less to do as we will never return to EFI ABI world
LDEAD_LOOP:
jmp LDEAD_LOOP // _exit should never return
ASM_GLOBAL ASM_PFX(GasketSetTimer)
ASM_PFX(GasketSetTimer):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
- pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
- pushq %rdi
+ pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
+ pushq %rdi
movq %rcx, %rdi // Swizzle args
movq %rdx, %rsi
- call ASM_PFX(SetTimer)
-
- popq %rdi // restore state
- popq %rsi
- popq %rbp
+ call ASM_PFX(SetTimer)
+
+ popq %rdi // restore state
+ popq %rsi
+ popq %rbp
ret
-
+
ASM_GLOBAL ASM_PFX(GasketGetLocalTime)
ASM_PFX(GasketGetLocalTime):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
- call ASM_PFX(GetLocalTime)
+ call ASM_PFX(GetLocalTime)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketgmtime)
ASM_PFX(Gasketgmtime):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
- call ASM_PFX(localtime)
+ call ASM_PFX(localtime)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketGetTimeZone)
ASM_PFX(GasketGetTimeZone):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
pushq %rdi
- call ASM_PFX(GetTimeZone)
+ call ASM_PFX(GetTimeZone)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketGetDayLight)
ASM_PFX(GasketGetDayLight):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
pushq %rdi
- call ASM_PFX(GetDayLight)
+ call ASM_PFX(GetDayLight)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketpoll)
ASM_PFX(Gasketpoll):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rdx, %rsi
movq %r8, %rdx
- call ASM_PFX(poll)
+ call ASM_PFX(poll)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketread)
ASM_PFX(Gasketread):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rdx, %rsi
movq %r8, %rdx
- call ASM_PFX(read)
+ call ASM_PFX(read)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketwrite)
ASM_PFX(Gasketwrite):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rdx, %rsi
movq %r8, %rdx
- call ASM_PFX(write)
+ call ASM_PFX(write)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketgetenv)
ASM_PFX(Gasketgetenv):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
- call ASM_PFX(getenv)
+ call ASM_PFX(getenv)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketopen)
ASM_PFX(Gasketopen):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rdx, %rsi
movq %r8, %rdx
- call ASM_PFX(open)
+ call ASM_PFX(open)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketlseek)
ASM_PFX(Gasketlseek):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rdx, %rsi
movq %r8, %rdx
- call ASM_PFX(lseek)
+ call ASM_PFX(lseek)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketftruncate)
ASM_PFX(Gasketftruncate):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rdx, %rsi
movq %r8, %rdx
- call ASM_PFX(ftruncate)
+ call ASM_PFX(ftruncate)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketclose)
ASM_PFX(Gasketclose):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
- call ASM_PFX(close)
+ call ASM_PFX(close)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketmkdir)
ASM_PFX(Gasketmkdir):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
movq %rdx, %rsi
- call ASM_PFX(mkdir)
+ call ASM_PFX(mkdir)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketunlink)
ASM_PFX(Gasketunlink):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
- call ASM_PFX(unlink)
+ call ASM_PFX(unlink)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketGetErrno)
ASM_PFX(GasketGetErrno):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
pushq %rdi
- call ASM_PFX(GetErrno)
+ call ASM_PFX(GetErrno)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketclosedir)
ASM_PFX(Gasketclosedir):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
- call ASM_PFX(closedir)
+ call ASM_PFX(closedir)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketrename)
ASM_PFX(Gasketrename):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
movq %rdx, %rsi
- call ASM_PFX(rename)
+ call ASM_PFX(rename)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketmktime)
ASM_PFX(Gasketmktime):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
movq %rdx, %rsi
- call ASM_PFX(mktime)
+ call ASM_PFX(mktime)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketfsync)
ASM_PFX(Gasketfsync):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
movq %rdx, %rsi
- call ASM_PFX(fsync)
+ call ASM_PFX(fsync)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketchmod)
ASM_PFX(Gasketchmod):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
movq %rdx, %rsi
- call ASM_PFX(chmod)
+ call ASM_PFX(chmod)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketutime)
ASM_PFX(Gasketutime):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
movq %rdx, %rsi
- call ASM_PFX(utime)
+ call ASM_PFX(utime)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gaskettcflush)
ASM_PFX(Gaskettcflush):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
movq %rdx, %rsi
- call ASM_PFX(tcflush)
+ call ASM_PFX(tcflush)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketUgaCreate)
ASM_PFX(GasketUgaCreate):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
movq %rdx, %rsi
- call ASM_PFX(UgaCreate)
+ call ASM_PFX(UgaCreate)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketperror)
ASM_PFX(Gasketperror):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
movq %rdx, %rsi
- call ASM_PFX(perror)
+ call ASM_PFX(perror)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketioctl)
ASM_PFX(Gasketioctl):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rdx, %rsi
movq %r8, %rdx
- call ASM_PFX(UnixIoCtl1)
+ call ASM_PFX(UnixIoCtl1)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketfcntl)
ASM_PFX(Gasketfcntl):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rdx, %rsi
movq %r8, %rdx
- call ASM_PFX(UnixFcntl1)
+ call ASM_PFX(UnixFcntl1)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketcfsetispeed)
ASM_PFX(Gasketcfsetispeed):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
movq %rdx, %rsi
- call ASM_PFX(cfsetispeed)
+ call ASM_PFX(cfsetispeed)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketcfsetospeed)
ASM_PFX(Gasketcfsetospeed):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
movq %rdx, %rsi
- call ASM_PFX(cfsetospeed)
+ call ASM_PFX(cfsetospeed)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gaskettcgetattr)
ASM_PFX(Gaskettcgetattr):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rdx, %rsi
movq %r8, %rdx
- call ASM_PFX(tcgetattr)
+ call ASM_PFX(tcgetattr)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gaskettcsetattr)
ASM_PFX(Gaskettcsetattr):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rdx, %rsi
movq %r8, %rdx
- call ASM_PFX(tcsetattr)
+ call ASM_PFX(tcsetattr)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketUnixPeCoffGetEntryPoint)
ASM_PFX(GasketUnixPeCoffGetEntryPoint):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
movq %rdx, %rsi
- call ASM_PFX(SecPeCoffGetEntryPoint)
+ call ASM_PFX(SecPeCoffGetEntryPoint)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketUnixPeCoffRelocateImageExtraAction)
ASM_PFX(GasketUnixPeCoffRelocateImageExtraAction):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
- call ASM_PFX(SecPeCoffRelocateImageExtraAction)
+ call ASM_PFX(SecPeCoffRelocateImageExtraAction)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketUnixPeCoffUnloadImageExtraAction)
ASM_PFX(GasketUnixPeCoffUnloadImageExtraAction):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
- call ASM_PFX(SecPeCoffLoaderUnloadImageExtraAction)
+ call ASM_PFX(SecPeCoffLoaderUnloadImageExtraAction)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketsocket)
ASM_PFX(Gasketsocket):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(Gasketgetifaddrs)
ASM_PFX(Gasketgetifaddrs):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
call ASM_PFX(getifaddrs)
- popq %rbp
- popq %rsi
- popq %rbp
+ popq %rbp
+ popq %rsi
+ popq %rbp
ret
ASM_GLOBAL _Gasketfreeifaddrs
_Gasketfreeifaddrs:
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketUgaClose)
ASM_PFX(GasketUgaClose):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
- call ASM_PFX(UgaClose)
+ call ASM_PFX(UgaClose)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketUgaSize)
ASM_PFX(GasketUgaSize):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rdx, %rsi
movq %r8, %rdx
- call ASM_PFX(UgaSize)
+ call ASM_PFX(UgaSize)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketUgaCheckKey)
ASM_PFX(GasketUgaCheckKey):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
- call ASM_PFX(UgaCheckKey)
+ call ASM_PFX(UgaCheckKey)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketUgaGetKey)
ASM_PFX(GasketUgaGetKey):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rcx, %rdi // Swizzle args
movq %rdx, %rsi
- call ASM_PFX(UgaGetKey)
+ call ASM_PFX(UgaGetKey)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketUgaKeySetState)
ASM_PFX(GasketUgaKeySetState):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketUgaRegisterKeyNotify)
ASM_PFX(GasketUgaRegisterKeyNotify):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketUgaBlt)
ASM_PFX(GasketUgaBlt):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %r8, %rdx
movq %r9, %rcx
- call ASM_PFX(UgaBlt)
+ call ASM_PFX(UgaBlt)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketUgaCheckPointer)
ASM_PFX(GasketUgaCheckPointer):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketUgaGetPointerState)
ASM_PFX(GasketUgaGetPointerState):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketUnixEnableInterrupt)
ASM_PFX(GasketUnixEnableInterrupt):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketUnixDisableInterrupt)
ASM_PFX(GasketUnixDisableInterrupt):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
//
// );
ASM_GLOBAL ASM_PFX(ReverseGasketUint64)
ASM_PFX(ReverseGasketUint64):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
movq %rdi, %rax // Swizzle args
call *%rax
addq $32, %rsp
- popq %rbp
+ popq %rbp
ret
//
// );
ASM_GLOBAL ASM_PFX(ReverseGasketUint64Uint64)
ASM_PFX(ReverseGasketUint64Uint64):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
movq %rdi, %rax // Swizzle args
call *%rax
addq $32, %rsp
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketSecUnixPeiLoadFile)
ASM_PFX(GasketSecUnixPeiLoadFile):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %r8, %rdx
movq %r9, %rcx
- call ASM_PFX(SecUnixPeiLoadFile)
+ call ASM_PFX(SecUnixPeiLoadFile)
popq %rdi // restore state
popq %rsi
ASM_GLOBAL ASM_PFX(GasketSecUnixPeiAutoScan)
ASM_PFX(GasketSecUnixPeiAutoScan):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %rdx, %rsi
movq %r8, %rdx
- call ASM_PFX(SecUnixPeiAutoScan)
+ call ASM_PFX(SecUnixPeiAutoScan)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketSecUnixUnixThunkAddress)
ASM_PFX(GasketSecUnixUnixThunkAddress):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
pushq %rdi
- call ASM_PFX(SecUnixUnixThunkAddress)
+ call ASM_PFX(SecUnixUnixThunkAddress)
- popq %rdi
- popq %rsi
- popq %rbp
+ popq %rdi
+ popq %rsi
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketSecPeiReportStatusCode)
ASM_PFX(GasketSecPeiReportStatusCode):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq $0, %r8 // BugBug: This should come from the stack
movq $0, %r9 // But we can cheat since they are optional for bringup....
- call ASM_PFX(SecPeiReportStatusCode)
+ call ASM_PFX(SecPeiReportStatusCode)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketSecUnixFdAddress)
ASM_PFX(GasketSecUnixFdAddress):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %r8, %rdx
movq %r9, %rcx
- call ASM_PFX(SecUnixFdAddress)
+ call ASM_PFX(SecUnixFdAddress)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
ASM_GLOBAL ASM_PFX(GasketSecTemporaryRamSupport)
ASM_PFX(GasketSecTemporaryRamSupport):
- pushq %rbp // stack frame is for the debugger
+ pushq %rbp // stack frame is for the debugger
movq %rsp, %rbp
pushq %rsi // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI
movq %r8, %rdx
movq %r9, %rcx
- call ASM_PFX(SecTemporaryRamSupport)
+ call ASM_PFX(SecTemporaryRamSupport)
popq %rdi // restore state
popq %rsi
- popq %rbp
+ popq %rbp
ret
#------------------------------------------------------------------------------\r
ASM_GLOBAL ASM_PFX(PeiSwitchStacks)\r
ASM_PFX(PeiSwitchStacks):\r
- pushq %rbp // stack frame is for the debugger\r
- movq %rsp, %rbp\r
+ pushq %rbp // stack frame is for the debugger\r
+ movq %rsp, %rbp\r
\r
movq %r8, %rsp\r
\r
# Reserve space for register parameters (rcx, rdx, r8 & r9) on the stack,\r
# in case the callee wishes to spill them.\r
#\r
- subq $32, %rsp // 32-byte shadow space plus alignment pad\r
+ subq $32, %rsp // 32-byte shadow space plus alignment pad\r
call *%rax\r
\r
\r
#------------------------------------------------------------------------------\r
ASM_GLOBAL ASM_PFX(UnixPeiSwitchStacks)\r
ASM_PFX(UnixPeiSwitchStacks):\r
- pushq %rbp // stack frame is for the debugger\r
- movq %rsp, %rbp\r
+ pushq %rbp // stack frame is for the debugger\r
+ movq %rsp, %rbp\r
\r
mov %rdi, %rax\r
mov %rsi, %rdi\r
#------------------------------------------------------------------------------ \r
ASM_GLOBAL ASM_PFX(SecSwitchStack)\r
ASM_PFX(SecSwitchStack):\r
- pushq %rbp // stack frame is for the debugger\r
+ pushq %rbp // stack frame is for the debugger\r
movq %rsp, %rbp\r
\r
mov %rsp, %rax\r
//\r
if (TimerPeriod == 0\r
|| ((TimerPeriod > TIMER_MINIMUM_VALUE)\r
- && (TimerPeriod < TIMER_MAXIMUM_VALUE))) {\r
+ && (TimerPeriod < TIMER_MAXIMUM_VALUE))) {\r
mTimerPeriodMs = DivU64x32 (TimerPeriod + 5000, 10000);\r
\r
gUnix->SetTimer (mTimerPeriodMs, TimerCallback);\r
*ErrorType = &gEfiBlockIoProtocolGuid;\r
*BufferSize = 0x60;\r
gBS->AllocatePool (EfiBootServicesData, (UINTN) (*BufferSize),\r
- (void *)Buffer);\r
+ (void *)Buffer);\r
CopyMem (*Buffer, L"Unix Block I/O Driver Diagnostics Failed\n", *BufferSize);\r
return EFI_DEVICE_ERROR;\r
}\r
BOOLEAN WriteProtected;\r
UINTN NumberOfBlocks;\r
UINTN BlockSize;\r
- INTN i;\r
+ INTN i;\r
\r
//\r
// Grab the protocols we need\r
\r
UnixDevice->ControllerNameTable = NULL;\r
\r
- // FIXME: check size\r
+ // FIXME: check size\r
StrCpy(ComponentName, UnixDevice->UnixIo.EnvString);\r
\r
UnixDevice->DevicePath = UnixBusCreateDevicePath (\r
#define __MAX_BAUD B4000000\r
#endif\r
#ifndef CMSPAR\r
-#define CMSPAR 010000000000 /* mark or space (stick) parity */\r
+#define CMSPAR 010000000000 /* mark or space (stick) parity */\r
#endif\r
#ifndef FIONREAD\r
-#define FIONREAD 0x541B\r
+#define FIONREAD 0x541B\r
#endif\r
//\r
// Function Prototypes\r
if (Private != NULL) {\r
\r
if (Private->VolumeLabel != NULL)\r
- gBS->FreePool (Private->VolumeLabel);\r
+ gBS->FreePool (Private->VolumeLabel);\r
if (Private->FilePath != NULL)\r
- gBS->FreePool (Private->FilePath);\r
+ gBS->FreePool (Private->FilePath);\r
FreeUnicodeStringTable (Private->ControllerNameTable);\r
\r
gBS->FreePool (Private);\r
// Create a directory\r
//\r
if (NewPrivateFile->UnixThunk->MkDir (NewPrivateFile->FileName, 0777) != 0) {\r
- INTN LastError;\r
+ INTN LastError;\r
\r
LastError = PrivateFile->UnixThunk->GetErrno ();\r
if (LastError != EEXIST) {\r
0666);\r
if (NewPrivateFile->fd < 0) {\r
if (PrivateFile->UnixThunk->GetErrno () == ENOENT) {\r
- Status = EFI_NOT_FOUND;\r
+ Status = EFI_NOT_FOUND;\r
} else {\r
- Status = EFI_ACCESS_DENIED;\r
+ Status = EFI_ACCESS_DENIED;\r
}\r
}\r
}\r
}\r
if (PrivateFile->UnixThunk->Stat (\r
FileName == NULL ? PrivateFile->FileName : FileName,\r
- &buf) < 0)\r
+ &buf) < 0)\r
return EFI_DEVICE_ERROR;\r
\r
Status = EFI_SUCCESS;\r
}\r
\r
Res = PrivateFile->UnixThunk->Read (\r
- PrivateFile->fd,\r
- Buffer,\r
- *BufferSize);\r
+ PrivateFile->fd,\r
+ Buffer,\r
+ *BufferSize);\r
if (Res < 0) {\r
Status = EFI_DEVICE_ERROR;\r
goto Done;\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
- \r
+ \r
AsciiStrCpy(FullFileName, PrivateFile->FileName);\r
AsciiStrCat(FullFileName, "/");\r
AsciiStrCat(FullFileName, PrivateFile->Dirent->d_name);\r
Status = UnixSimpleFileSystemFileInfo (PrivateFile,\r
- FullFileName,\r
- BufferSize,\r
- Buffer);\r
+ FullFileName,\r
+ BufferSize,\r
+ Buffer);\r
gBS->FreePool (FullFileName);\r
\r
PrivateFile->Dirent = NULL;\r
}\r
\r
Res = PrivateFile->UnixThunk->Write (\r
- PrivateFile->fd,\r
- Buffer,\r
- *BufferSize);\r
+ PrivateFile->fd,\r
+ Buffer,\r
+ *BufferSize);\r
if (Res == (UINTN)-1) {\r
Status = EFI_DEVICE_ERROR;\r
goto Done;\r
}\r
\r
Status = gBS->AllocatePool (EfiBootServicesData, OldInfoSize,\r
- (VOID **)&OldFileInfo);\r
+ (VOID **)&OldFileInfo);\r
\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
\r
EFI_DRIVER_BINDING_PROTOCOL gUnixSnpDriverBinding =\r
{\r
- UnixSnpDriverBindingSupported,\r
- UnixSnpDriverBindingStart,\r
- UnixSnpDriverBindingStop,\r
- 0xA,\r
- NULL,\r
- NULL\r
+ UnixSnpDriverBindingSupported,\r
+ UnixSnpDriverBindingStart,\r
+ UnixSnpDriverBindingStop,\r
+ 0xA,\r
+ NULL,\r
+ NULL\r
};\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UnixSnpStart(\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL* This\r
- );\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL* This\r
+ );\r
\r
/**\r
Changes the state of a network interface from "started" to "stopped".\r
EFI_STATUS\r
EFIAPI\r
UnixSnpStop(\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL* This\r
- );\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL* This\r
+ );\r
\r
/**\r
Resets a network adapter and allocates the transmit and receive buffers \r
EFI_STATUS\r
EFIAPI\r
UnixSnpInitialize(\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
- IN UINTN ExtraRxBufferSize OPTIONAL,\r
- IN UINTN ExtraTxBufferSize OPTIONAL\r
- );\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
+ IN UINTN ExtraRxBufferSize OPTIONAL,\r
+ IN UINTN ExtraTxBufferSize OPTIONAL\r
+ );\r
\r
/**\r
Resets a network adapter and re-initializes it with the parameters that were \r
EFI_STATUS\r
EFIAPI\r
UnixSnpReset(\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
- IN BOOLEAN ExtendedVerification\r
- );\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
+ IN BOOLEAN ExtendedVerification\r
+ );\r
\r
/**\r
Resets a network adapter and leaves it in a state that is safe for \r
EFI_STATUS\r
EFIAPI\r
UnixSnpShutdown(\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL* This\r
- );\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL* This\r
+ );\r
\r
/**\r
Manages the multicast receive filters of a network interface.\r
EFI_STATUS\r
EFIAPI\r
UnixSnpReceiveFilters(\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
- IN UINT32 EnableBits,\r
- IN UINT32 DisableBits,\r
- IN BOOLEAN ResetMcastFilter,\r
- IN UINTN McastFilterCount OPTIONAL,\r
- IN EFI_MAC_ADDRESS* McastFilter OPTIONAL\r
- );\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
+ IN UINT32 EnableBits,\r
+ IN UINT32 DisableBits,\r
+ IN BOOLEAN ResetMcastFilter,\r
+ IN UINTN McastFilterCount OPTIONAL,\r
+ IN EFI_MAC_ADDRESS* McastFilter OPTIONAL\r
+ );\r
\r
/**\r
Modifies or resets the current station address, if supported.\r
EFI_STATUS\r
EFIAPI\r
UnixSnpStationAddress(\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
- IN BOOLEAN Reset,\r
- IN EFI_MAC_ADDRESS* NewMacAddr OPTIONAL\r
- );\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
+ IN BOOLEAN Reset,\r
+ IN EFI_MAC_ADDRESS* NewMacAddr OPTIONAL\r
+ );\r
\r
/**\r
Resets or collects the statistics on a network interface.\r
EFI_STATUS\r
EFIAPI\r
UnixSnpStatistics(\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
- IN BOOLEAN Reset,\r
- IN OUT UINTN* StatisticsSize OPTIONAL,\r
- OUT EFI_NETWORK_STATISTICS* StatisticsTable OPTIONAL\r
- );\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
+ IN BOOLEAN Reset,\r
+ IN OUT UINTN* StatisticsSize OPTIONAL,\r
+ OUT EFI_NETWORK_STATISTICS* StatisticsTable OPTIONAL\r
+ );\r
\r
/**\r
Converts a multicast IP address to a multicast HW MAC address.\r
EFI_STATUS\r
EFIAPI\r
UnixSnpMcastIptoMac(\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
- IN BOOLEAN Ipv6,\r
- IN EFI_IP_ADDRESS* Ip,\r
- OUT EFI_MAC_ADDRESS* Mac\r
- );\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
+ IN BOOLEAN Ipv6,\r
+ IN EFI_IP_ADDRESS* Ip,\r
+ OUT EFI_MAC_ADDRESS* Mac\r
+ );\r
\r
/**\r
Performs read and write operations on the NVRAM device attached to a \r
EFI_STATUS\r
EFIAPI\r
UnixSnpNvdata(\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
- IN BOOLEAN ReadOrWrite,\r
- IN UINTN Offset,\r
- IN UINTN BufferSize,\r
- IN OUT VOID* Buffer\r
- );\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
+ IN BOOLEAN ReadOrWrite,\r
+ IN UINTN Offset,\r
+ IN UINTN BufferSize,\r
+ IN OUT VOID* Buffer\r
+ );\r
\r
/**\r
Reads the current interrupt status and recycled transmit buffer status from \r
EFI_STATUS\r
EFIAPI\r
UnixSnpGetStatus(\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
- OUT UINT32* InterruptStatus,\r
- OUT VOID** TxBuffer\r
- );\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
+ OUT UINT32* InterruptStatus,\r
+ OUT VOID** TxBuffer\r
+ );\r
\r
/**\r
Places a packet in the transmit queue of a network interface.\r
EFI_STATUS\r
EFIAPI\r
UnixSnpTransmit(\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
- IN UINTN HeaderSize,\r
- IN UINTN BufferSize,\r
- IN VOID* Buffer,\r
- IN EFI_MAC_ADDRESS* SrcAddr OPTIONAL,\r
- IN EFI_MAC_ADDRESS* DestAddr OPTIONAL,\r
- IN UINT16* Protocol OPTIONAL\r
- );\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
+ IN UINTN HeaderSize,\r
+ IN UINTN BufferSize,\r
+ IN VOID* Buffer,\r
+ IN EFI_MAC_ADDRESS* SrcAddr OPTIONAL,\r
+ IN EFI_MAC_ADDRESS* DestAddr OPTIONAL,\r
+ IN UINT16* Protocol OPTIONAL\r
+ );\r
\r
/**\r
Receives a packet from a network interface.\r
EFI_STATUS\r
EFIAPI\r
UnixSnpReceive(\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
- OUT UINTN* HeaderSize OPTIONAL,\r
- IN OUT UINTN* BuffSize,\r
- OUT VOID* Buffer,\r
- OUT EFI_MAC_ADDRESS* SourceAddr OPTIONAL,\r
- OUT EFI_MAC_ADDRESS* DestinationAddr OPTIONAL,\r
- OUT UINT16* Protocol OPTIONAL\r
- );\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL* This,\r
+ OUT UINTN* HeaderSize OPTIONAL,\r
+ IN OUT UINTN* BuffSize,\r
+ OUT VOID* Buffer,\r
+ OUT EFI_MAC_ADDRESS* SourceAddr OPTIONAL,\r
+ OUT EFI_MAC_ADDRESS* DestinationAddr OPTIONAL,\r
+ OUT UINT16* Protocol OPTIONAL\r
+ );\r
\r
VOID\r
EFIAPI\r
UnixSnpWaitForPacketNotify(\r
- IN EFI_EVENT Event,\r
- IN VOID* Private\r
- );\r
+ IN EFI_EVENT Event,\r
+ IN VOID* Private\r
+ );\r
\r
//\r
// Strange, but there doesn't appear to be any structure for the Ethernet header in edk2...\r
\r
typedef struct\r
{\r
- UINT8 DstAddr[ NET_ETHER_ADDR_LEN ];\r
- UINT8 SrcAddr[ NET_ETHER_ADDR_LEN ];\r
- UINT16 Type;\r
+ UINT8 DstAddr[ NET_ETHER_ADDR_LEN ];\r
+ UINT8 SrcAddr[ NET_ETHER_ADDR_LEN ];\r
+ UINT16 Type;\r
} EthernetHeader;\r
\r
UNIX_SNP_PRIVATE_DATA gUnixSnpPrivateTemplate =\r
{\r
- UNIX_SNP_PRIVATE_DATA_SIGNATURE, // Signature\r
- NULL, // UnixThunk\r
- NULL, // DeviceHandle\r
- NULL, // DevicePath\r
- { 0 }, // MacAddress\r
- NULL, // InterfaceName\r
- 0, // ReadBufferSize\r
- NULL, // ReadBuffer\r
- NULL, // CurrentReadPointer\r
- NULL, // EndReadPointer\r
- 0, // BpfFd\r
- { // Snp\r
- EFI_SIMPLE_NETWORK_PROTOCOL_REVISION, // Revision\r
- UnixSnpStart, // Start\r
- UnixSnpStop, // Stop\r
- UnixSnpInitialize, // Initialize\r
- UnixSnpReset, // Reset\r
- UnixSnpShutdown, // Shutdown\r
- UnixSnpReceiveFilters, // ReceiveFilters\r
- UnixSnpStationAddress, // StationAddress\r
- UnixSnpStatistics, // Statistics\r
- UnixSnpMcastIptoMac, // MCastIpToMac\r
- UnixSnpNvdata, // NvData\r
- UnixSnpGetStatus, // GetStatus\r
- UnixSnpTransmit, // Transmit\r
- UnixSnpReceive, // Receive\r
- NULL, // WaitForPacket\r
- NULL // Mode\r
- },\r
- { // Mode\r
- EfiSimpleNetworkStopped, // State\r
- NET_ETHER_ADDR_LEN, // HwAddressSize\r
- NET_ETHER_HEADER_SIZE, // MediaHeaderSize\r
- 1500, // MaxPacketSize\r
- 0, // NvRamSize\r
- 0, // NvRamAccessSize\r
- 0, // ReceiveFilterMask\r
- 0, // ReceiveFilterSetting\r
- MAX_MCAST_FILTER_CNT, // MaxMCastFilterCount\r
- 0, // MCastFilterCount\r
- {\r
- 0\r
- }, // MCastFilter\r
- {\r
- 0\r
- }, // CurrentAddress\r
- {\r
- 0\r
- }, // BroadcastAddress\r
- {\r
- 0\r
- }, // PermanentAddress\r
- NET_IFTYPE_ETHERNET, // IfType\r
- FALSE, // MacAddressChangeable\r
- FALSE, // MultipleTxSupported\r
- FALSE, // MediaPresentSupported\r
- TRUE // MediaPresent\r
- }\r
+ UNIX_SNP_PRIVATE_DATA_SIGNATURE, // Signature\r
+ NULL, // UnixThunk\r
+ NULL, // DeviceHandle\r
+ NULL, // DevicePath\r
+ { 0 }, // MacAddress\r
+ NULL, // InterfaceName\r
+ 0, // ReadBufferSize\r
+ NULL, // ReadBuffer\r
+ NULL, // CurrentReadPointer\r
+ NULL, // EndReadPointer\r
+ 0, // BpfFd\r
+ { // Snp\r
+ EFI_SIMPLE_NETWORK_PROTOCOL_REVISION, // Revision\r
+ UnixSnpStart, // Start\r
+ UnixSnpStop, // Stop\r
+ UnixSnpInitialize, // Initialize\r
+ UnixSnpReset, // Reset\r
+ UnixSnpShutdown, // Shutdown\r
+ UnixSnpReceiveFilters, // ReceiveFilters\r
+ UnixSnpStationAddress, // StationAddress\r
+ UnixSnpStatistics, // Statistics\r
+ UnixSnpMcastIptoMac, // MCastIpToMac\r
+ UnixSnpNvdata, // NvData\r
+ UnixSnpGetStatus, // GetStatus\r
+ UnixSnpTransmit, // Transmit\r
+ UnixSnpReceive, // Receive\r
+ NULL, // WaitForPacket\r
+ NULL // Mode\r
+ },\r
+ { // Mode\r
+ EfiSimpleNetworkStopped, // State\r
+ NET_ETHER_ADDR_LEN, // HwAddressSize\r
+ NET_ETHER_HEADER_SIZE, // MediaHeaderSize\r
+ 1500, // MaxPacketSize\r
+ 0, // NvRamSize\r
+ 0, // NvRamAccessSize\r
+ 0, // ReceiveFilterMask\r
+ 0, // ReceiveFilterSetting\r
+ MAX_MCAST_FILTER_CNT, // MaxMCastFilterCount\r
+ 0, // MCastFilterCount\r
+ {\r
+ 0\r
+ }, // MCastFilter\r
+ {\r
+ 0\r
+ }, // CurrentAddress\r
+ {\r
+ 0\r
+ }, // BroadcastAddress\r
+ {\r
+ 0\r
+ }, // PermanentAddress\r
+ NET_IFTYPE_ETHERNET, // IfType\r
+ FALSE, // MacAddressChangeable\r
+ FALSE, // MultipleTxSupported\r
+ FALSE, // MediaPresentSupported\r
+ TRUE // MediaPresent\r
+ }\r
};\r
\r
STATIC EFI_STATUS\r
GetInterfaceMacAddr(\r
- IN UNIX_SNP_PRIVATE_DATA* Private,\r
- IN EFI_UNIX_IO_PROTOCOL* UnixIo\r
- )\r
+ IN UNIX_SNP_PRIVATE_DATA* Private,\r
+ IN EFI_UNIX_IO_PROTOCOL* UnixIo\r
+ )\r
{\r
- struct ifaddrs* IfAddrs;\r
- struct ifaddrs* If;\r
- struct sockaddr_dl* IfSdl;\r
- EFI_STATUS Status;\r
- INTN Result;\r
-\r
- Result = UnixIo->UnixThunk->GetIfAddrs( &IfAddrs );\r
- if ( Result != 0 )\r
- {\r
- return( EFI_UNSUPPORTED );\r
- }\r
-\r
- //\r
- // Convert the interface name to ASCII so we can find it.\r
- //\r
- Private->InterfaceName = AllocateZeroPool( StrLen( UnixIo->EnvString ) );\r
-\r
- if ( !Private->InterfaceName )\r
- {\r
- Status = EFI_OUT_OF_RESOURCES;\r
- goto Exit;\r
- }\r
-\r
- UnicodeStrToAsciiStr( UnixIo->EnvString, Private->InterfaceName );\r
-\r
- If = IfAddrs;\r
-\r
- while ( If != NULL )\r
- {\r
- IfSdl = ( struct sockaddr_dl * ) If->ifa_addr;\r
-\r
- if ( IfSdl->sdl_family == AF_LINK )\r
- {\r
- if ( !AsciiStrCmp( Private->InterfaceName, If->ifa_name ) )\r
- {\r
- CopyMem( &Private->MacAddress, LLADDR( IfSdl ), NET_ETHER_ADDR_LEN );\r
-\r
- Status = EFI_SUCCESS;\r
- break;\r
- }\r
- }\r
-\r
- If = If->ifa_next;\r
- }\r
+ struct ifaddrs* IfAddrs;\r
+ struct ifaddrs* If;\r
+ struct sockaddr_dl* IfSdl;\r
+ EFI_STATUS Status;\r
+ INTN Result;\r
+\r
+ Result = UnixIo->UnixThunk->GetIfAddrs( &IfAddrs );\r
+ if ( Result != 0 )\r
+ {\r
+ return( EFI_UNSUPPORTED );\r
+ }\r
+\r
+ //\r
+ // Convert the interface name to ASCII so we can find it.\r
+ //\r
+ Private->InterfaceName = AllocateZeroPool( StrLen( UnixIo->EnvString ) );\r
+\r
+ if ( !Private->InterfaceName )\r
+ {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto Exit;\r
+ }\r
+\r
+ UnicodeStrToAsciiStr( UnixIo->EnvString, Private->InterfaceName );\r
+\r
+ If = IfAddrs;\r
+\r
+ while ( If != NULL )\r
+ {\r
+ IfSdl = ( struct sockaddr_dl * ) If->ifa_addr;\r
+\r
+ if ( IfSdl->sdl_family == AF_LINK )\r
+ {\r
+ if ( !AsciiStrCmp( Private->InterfaceName, If->ifa_name ) )\r
+ {\r
+ CopyMem( &Private->MacAddress, LLADDR( IfSdl ), NET_ETHER_ADDR_LEN );\r
+\r
+ Status = EFI_SUCCESS;\r
+ break;\r
+ }\r
+ }\r
+\r
+ If = If->ifa_next;\r
+ }\r
\r
Exit:\r
- ( VOID ) UnixIo->UnixThunk->FreeIfAddrs( IfAddrs );\r
+ ( VOID ) UnixIo->UnixThunk->FreeIfAddrs( IfAddrs );\r
\r
- return( Status );\r
+ return( Status );\r
}\r
\r
\r
STATIC EFI_STATUS\r
OpenBpfFileDescriptor(\r
- IN UNIX_SNP_PRIVATE_DATA* Private,\r
- OUT INTN* Fd\r
- )\r
+ IN UNIX_SNP_PRIVATE_DATA* Private,\r
+ OUT INTN* Fd\r
+ )\r
{\r
- CHAR8 BfpDeviceName[ 256 ];\r
- INTN Index;\r
- EFI_STATUS Status = EFI_OUT_OF_RESOURCES;\r
- INTN Result;\r
-\r
- //\r
- // Open a Berkeley Packet Filter device. This must be done as root, so this is probably\r
- // the place which is most likely to fail...\r
- //\r
- for ( Index = 0; TRUE; Index++ )\r
- {\r
- AsciiSPrint( BfpDeviceName, sizeof( BfpDeviceName ), "/dev/bpf%d", Index );\r
-\r
- *Fd = Private->UnixThunk->Open( BfpDeviceName, O_RDWR, 0 );\r
-\r
- if ( *Fd >= 0 )\r
- {\r
- Status = EFI_SUCCESS;\r
- break;\r
- }\r
-\r
- Result = Private->UnixThunk->GetErrno();\r
+ CHAR8 BfpDeviceName[ 256 ];\r
+ INTN Index;\r
+ EFI_STATUS Status = EFI_OUT_OF_RESOURCES;\r
+ INTN Result;\r
+\r
+ //\r
+ // Open a Berkeley Packet Filter device. This must be done as root, so this is probably\r
+ // the place which is most likely to fail...\r
+ //\r
+ for ( Index = 0; TRUE; Index++ )\r
+ {\r
+ AsciiSPrint( BfpDeviceName, sizeof( BfpDeviceName ), "/dev/bpf%d", Index );\r
+\r
+ *Fd = Private->UnixThunk->Open( BfpDeviceName, O_RDWR, 0 );\r
+\r
+ if ( *Fd >= 0 )\r
+ {\r
+ Status = EFI_SUCCESS;\r
+ break;\r
+ }\r
+\r
+ Result = Private->UnixThunk->GetErrno();\r
if ( Result == EACCES )\r
{\r
DEBUG( ( EFI_D_ERROR, "Permissions on '%a' are incorrect. Fix with 'sudo chmod 666 %a'.\n",\r
BfpDeviceName, BfpDeviceName ) );\r
}\r
- if ( Result != EBUSY )\r
- {\r
- break;\r
- }\r
- }\r
+ if ( Result != EBUSY )\r
+ {\r
+ break;\r
+ }\r
+ }\r
\r
- return( Status );\r
+ return( Status );\r
}\r
\r
\r
EFI_STATUS\r
EFIAPI\r
UnixSnpDriverBindingSupported(\r
- IN EFI_DRIVER_BINDING_PROTOCOL* This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_DEVICE_PATH_PROTOCOL* RemainingDevicePath OPTIONAL\r
- )\r
+ IN EFI_DRIVER_BINDING_PROTOCOL* This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN EFI_DEVICE_PATH_PROTOCOL* RemainingDevicePath OPTIONAL\r
+ )\r
{\r
- EFI_STATUS Status;\r
- EFI_UNIX_IO_PROTOCOL* UnixIo;\r
-\r
- //\r
- // Open the I/O abstraction needed to perform the supported test.\r
- //\r
- Status = gBS->OpenProtocol(\r
- ControllerHandle,\r
- &gEfiUnixIoProtocolGuid,\r
- ( VOID ** ) &UnixIo,\r
- This->DriverBindingHandle,\r
- ControllerHandle,\r
- EFI_OPEN_PROTOCOL_BY_DRIVER\r
- );\r
-\r
- if ( EFI_ERROR( Status ) )\r
- {\r
- return( Status );\r
- }\r
-\r
- //\r
- // Validate GUID\r
- //\r
- Status = EFI_UNSUPPORTED;\r
- if ( CompareGuid( UnixIo->TypeGuid, &gEfiUnixNetworkGuid ) )\r
- {\r
- Status = EFI_SUCCESS;\r
- }\r
-\r
- //\r
- // Close the I/O abstraction used to perform the supported test.\r
- //\r
- gBS->CloseProtocol(\r
- ControllerHandle,\r
- &gEfiUnixIoProtocolGuid,\r
- This->DriverBindingHandle,\r
- ControllerHandle\r
- );\r
-\r
- return( Status );\r
+ EFI_STATUS Status;\r
+ EFI_UNIX_IO_PROTOCOL* UnixIo;\r
+\r
+ //\r
+ // Open the I/O abstraction needed to perform the supported test.\r
+ //\r
+ Status = gBS->OpenProtocol(\r
+ ControllerHandle,\r
+ &gEfiUnixIoProtocolGuid,\r
+ ( VOID ** ) &UnixIo,\r
+ This->DriverBindingHandle,\r
+ ControllerHandle,\r
+ EFI_OPEN_PROTOCOL_BY_DRIVER\r
+ );\r
+\r
+ if ( EFI_ERROR( Status ) )\r
+ {\r
+ return( Status );\r
+ }\r
+\r
+ //\r
+ // Validate GUID\r
+ //\r
+ Status = EFI_UNSUPPORTED;\r
+ if ( CompareGuid( UnixIo->TypeGuid, &gEfiUnixNetworkGuid ) )\r
+ {\r
+ Status = EFI_SUCCESS;\r
+ }\r
+\r
+ //\r
+ // Close the I/O abstraction used to perform the supported test.\r
+ //\r
+ gBS->CloseProtocol(\r
+ ControllerHandle,\r
+ &gEfiUnixIoProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ ControllerHandle\r
+ );\r
+\r
+ return( Status );\r
}\r
\r
\r
EFI_STATUS\r
EFIAPI\r
UnixSnpDriverBindingStart(\r
- IN EFI_DRIVER_BINDING_PROTOCOL* This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_DEVICE_PATH_PROTOCOL* RemainingDevicePath OPTIONAL\r
- )\r
+ IN EFI_DRIVER_BINDING_PROTOCOL* This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN EFI_DEVICE_PATH_PROTOCOL* RemainingDevicePath OPTIONAL\r
+ )\r
{\r
- MAC_ADDR_DEVICE_PATH Node;\r
- EFI_DEVICE_PATH_PROTOCOL* ParentDevicePath = NULL;\r
- EFI_UNIX_IO_PROTOCOL* UnixIo;\r
- UNIX_SNP_PRIVATE_DATA* Private = NULL;\r
- EFI_STATUS Status;\r
- BOOLEAN CreateDevice;\r
-\r
- //\r
- // Grab the protocols we need.\r
- //\r
- Status = gBS->OpenProtocol(\r
- ControllerHandle,\r
- &gEfiDevicePathProtocolGuid,\r
- ( VOID ** ) &ParentDevicePath,\r
- This->DriverBindingHandle,\r
- ControllerHandle,\r
- EFI_OPEN_PROTOCOL_BY_DRIVER\r
- );\r
- if ( EFI_ERROR( Status ) )\r
- {\r
- goto ErrorExit;\r
- }\r
-\r
- //\r
- // Open the I/O abstraction needed to perform the supported test.\r
- //\r
- Status = gBS->OpenProtocol(\r
- ControllerHandle,\r
- &gEfiUnixIoProtocolGuid,\r
- ( VOID ** ) &UnixIo,\r
- This->DriverBindingHandle,\r
- ControllerHandle,\r
- EFI_OPEN_PROTOCOL_BY_DRIVER\r
- );\r
- if ( EFI_ERROR( Status ) )\r
- {\r
- goto ErrorExit;\r
- }\r
-\r
- //\r
- // Validate GUID\r
- //\r
- if ( !CompareGuid( UnixIo->TypeGuid, &gEfiUnixNetworkGuid ) )\r
- {\r
- Status = EFI_UNSUPPORTED;\r
- goto ErrorExit;\r
- }\r
-\r
- CreateDevice = TRUE;\r
- if ( ( RemainingDevicePath != NULL ) && IsDevicePathEnd( RemainingDevicePath ) )\r
- {\r
- CreateDevice = FALSE;\r
- }\r
-\r
- if ( CreateDevice )\r
- {\r
- //\r
- // Allocate the private data.\r
- //\r
- Private = AllocateCopyPool( sizeof( UNIX_SNP_PRIVATE_DATA ), &gUnixSnpPrivateTemplate );\r
- if ( Private == NULL )\r
- {\r
- Status = EFI_OUT_OF_RESOURCES;\r
- goto ErrorExit;\r
- }\r
-\r
- Status = GetInterfaceMacAddr( Private, UnixIo );\r
- if ( EFI_ERROR( Status ) )\r
- {\r
- goto ErrorExit;\r
- }\r
-\r
- Private->UnixThunk = UnixIo->UnixThunk;\r
-\r
- Private->Snp.Mode = &Private->Mode;\r
-\r
- //\r
- // Set the broadcast address.\r
- //\r
- SetMem( &Private->Mode.BroadcastAddress, sizeof( EFI_MAC_ADDRESS ), 0xFF );\r
-\r
- CopyMem( &Private->Mode.CurrentAddress, &Private->MacAddress, sizeof( EFI_MAC_ADDRESS ) );\r
- CopyMem( &Private->Mode.PermanentAddress, &Private->MacAddress, sizeof( EFI_MAC_ADDRESS ) );\r
-\r
- //\r
- // Since the fake SNP is based on a real NIC, to avoid conflict with the host NIC\r
- // network stack, we use a different MAC address.\r
- // So just change the last byte of the MAC address for the real NIC.\r
- //\r
- Private->Mode.CurrentAddress.Addr[ NET_ETHER_ADDR_LEN - 1 ]++;\r
-\r
- //\r
- // Build the device path by appending the MAC node to the ParentDevicePath\r
- // from the UnixIo handle.\r
- //\r
- ZeroMem( &Node, sizeof( MAC_ADDR_DEVICE_PATH ) );\r
-\r
- Node.Header.Type = MESSAGING_DEVICE_PATH;\r
- Node.Header.SubType = MSG_MAC_ADDR_DP;\r
- Node.IfType = Private->Mode.IfType;\r
-\r
- SetDevicePathNodeLength( ( EFI_DEVICE_PATH_PROTOCOL * ) &Node, sizeof( MAC_ADDR_DEVICE_PATH ) );\r
-\r
- CopyMem( &Node.MacAddress, &Private->Mode.CurrentAddress, sizeof( EFI_MAC_ADDRESS ) );\r
-\r
- //\r
- // Build the device path by appending the MAC node to the ParentDevicePath from the UnixIo handle.\r
- //\r
- Private->DevicePath = AppendDevicePathNode( ParentDevicePath, ( EFI_DEVICE_PATH_PROTOCOL * ) &Node );\r
- if ( Private->DevicePath == NULL )\r
- {\r
- Status = EFI_OUT_OF_RESOURCES;\r
- goto ErrorExit;\r
- }\r
-\r
- Status = gBS->InstallMultipleProtocolInterfaces(\r
- &Private->DeviceHandle,\r
- &gEfiSimpleNetworkProtocolGuid,\r
- &Private->Snp,\r
- &gEfiDevicePathProtocolGuid,\r
- Private->DevicePath,\r
- NULL\r
- );\r
- if ( EFI_ERROR( Status ) )\r
- {\r
- goto ErrorExit;\r
- }\r
-\r
- Status = gBS->OpenProtocol(\r
- ControllerHandle,\r
- &gEfiUnixIoProtocolGuid,\r
- ( VOID ** ) &UnixIo,\r
- This->DriverBindingHandle,\r
- Private->DeviceHandle,\r
- EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
- );\r
- if ( EFI_ERROR( Status ) )\r
- {\r
- goto ErrorExit;\r
- }\r
- }\r
- return( Status );\r
+ MAC_ADDR_DEVICE_PATH Node;\r
+ EFI_DEVICE_PATH_PROTOCOL* ParentDevicePath = NULL;\r
+ EFI_UNIX_IO_PROTOCOL* UnixIo;\r
+ UNIX_SNP_PRIVATE_DATA* Private = NULL;\r
+ EFI_STATUS Status;\r
+ BOOLEAN CreateDevice;\r
+\r
+ //\r
+ // Grab the protocols we need.\r
+ //\r
+ Status = gBS->OpenProtocol(\r
+ ControllerHandle,\r
+ &gEfiDevicePathProtocolGuid,\r
+ ( VOID ** ) &ParentDevicePath,\r
+ This->DriverBindingHandle,\r
+ ControllerHandle,\r
+ EFI_OPEN_PROTOCOL_BY_DRIVER\r
+ );\r
+ if ( EFI_ERROR( Status ) )\r
+ {\r
+ goto ErrorExit;\r
+ }\r
+\r
+ //\r
+ // Open the I/O abstraction needed to perform the supported test.\r
+ //\r
+ Status = gBS->OpenProtocol(\r
+ ControllerHandle,\r
+ &gEfiUnixIoProtocolGuid,\r
+ ( VOID ** ) &UnixIo,\r
+ This->DriverBindingHandle,\r
+ ControllerHandle,\r
+ EFI_OPEN_PROTOCOL_BY_DRIVER\r
+ );\r
+ if ( EFI_ERROR( Status ) )\r
+ {\r
+ goto ErrorExit;\r
+ }\r
+\r
+ //\r
+ // Validate GUID\r
+ //\r
+ if ( !CompareGuid( UnixIo->TypeGuid, &gEfiUnixNetworkGuid ) )\r
+ {\r
+ Status = EFI_UNSUPPORTED;\r
+ goto ErrorExit;\r
+ }\r
+\r
+ CreateDevice = TRUE;\r
+ if ( ( RemainingDevicePath != NULL ) && IsDevicePathEnd( RemainingDevicePath ) )\r
+ {\r
+ CreateDevice = FALSE;\r
+ }\r
+\r
+ if ( CreateDevice )\r
+ {\r
+ //\r
+ // Allocate the private data.\r
+ //\r
+ Private = AllocateCopyPool( sizeof( UNIX_SNP_PRIVATE_DATA ), &gUnixSnpPrivateTemplate );\r
+ if ( Private == NULL )\r
+ {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto ErrorExit;\r
+ }\r
+\r
+ Status = GetInterfaceMacAddr( Private, UnixIo );\r
+ if ( EFI_ERROR( Status ) )\r
+ {\r
+ goto ErrorExit;\r
+ }\r
+\r
+ Private->UnixThunk = UnixIo->UnixThunk;\r
+\r
+ Private->Snp.Mode = &Private->Mode;\r
+\r
+ //\r
+ // Set the broadcast address.\r
+ //\r
+ SetMem( &Private->Mode.BroadcastAddress, sizeof( EFI_MAC_ADDRESS ), 0xFF );\r
+\r
+ CopyMem( &Private->Mode.CurrentAddress, &Private->MacAddress, sizeof( EFI_MAC_ADDRESS ) );\r
+ CopyMem( &Private->Mode.PermanentAddress, &Private->MacAddress, sizeof( EFI_MAC_ADDRESS ) );\r
+\r
+ //\r
+ // Since the fake SNP is based on a real NIC, to avoid conflict with the host NIC\r
+ // network stack, we use a different MAC address.\r
+ // So just change the last byte of the MAC address for the real NIC.\r
+ //\r
+ Private->Mode.CurrentAddress.Addr[ NET_ETHER_ADDR_LEN - 1 ]++;\r
+\r
+ //\r
+ // Build the device path by appending the MAC node to the ParentDevicePath\r
+ // from the UnixIo handle.\r
+ //\r
+ ZeroMem( &Node, sizeof( MAC_ADDR_DEVICE_PATH ) );\r
+\r
+ Node.Header.Type = MESSAGING_DEVICE_PATH;\r
+ Node.Header.SubType = MSG_MAC_ADDR_DP;\r
+ Node.IfType = Private->Mode.IfType;\r
+\r
+ SetDevicePathNodeLength( ( EFI_DEVICE_PATH_PROTOCOL * ) &Node, sizeof( MAC_ADDR_DEVICE_PATH ) );\r
+\r
+ CopyMem( &Node.MacAddress, &Private->Mode.CurrentAddress, sizeof( EFI_MAC_ADDRESS ) );\r
+\r
+ //\r
+ // Build the device path by appending the MAC node to the ParentDevicePath from the UnixIo handle.\r
+ //\r
+ Private->DevicePath = AppendDevicePathNode( ParentDevicePath, ( EFI_DEVICE_PATH_PROTOCOL * ) &Node );\r
+ if ( Private->DevicePath == NULL )\r
+ {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto ErrorExit;\r
+ }\r
+\r
+ Status = gBS->InstallMultipleProtocolInterfaces(\r
+ &Private->DeviceHandle,\r
+ &gEfiSimpleNetworkProtocolGuid,\r
+ &Private->Snp,\r
+ &gEfiDevicePathProtocolGuid,\r
+ Private->DevicePath,\r
+ NULL\r
+ );\r
+ if ( EFI_ERROR( Status ) )\r
+ {\r
+ goto ErrorExit;\r
+ }\r
+\r
+ Status = gBS->OpenProtocol(\r
+ ControllerHandle,\r
+ &gEfiUnixIoProtocolGuid,\r
+ ( VOID ** ) &UnixIo,\r
+ This->DriverBindingHandle,\r
+ Private->DeviceHandle,\r
+ EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
+ );\r
+ if ( EFI_ERROR( Status ) )\r
+ {\r
+ goto ErrorExit;\r
+ }\r
+ }\r
+ return( Status );\r
\r
ErrorExit:\r
- if ( Private->InterfaceName != NULL )\r
- {\r
- FreePool( Private->InterfaceName );\r
- Private->InterfaceName = NULL;\r
- }\r
- if ( Private != NULL )\r
- {\r
- FreePool( Private );\r
- }\r
- if ( ParentDevicePath != NULL )\r
- {\r
- gBS->CloseProtocol(\r
- ControllerHandle,\r
- &gEfiDevicePathProtocolGuid,\r
- This->DriverBindingHandle,\r
- ControllerHandle\r
- );\r
- }\r
-\r
- return( Status );\r
+ if ( Private->InterfaceName != NULL )\r
+ {\r
+ FreePool( Private->InterfaceName );\r
+ Private->InterfaceName = NULL;\r
+ }\r
+ if ( Private != NULL )\r
+ {\r
+ FreePool( Private );\r
+ }\r
+ if ( ParentDevicePath != NULL )\r
+ {\r
+ gBS->CloseProtocol(\r
+ ControllerHandle,\r
+ &gEfiDevicePathProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ ControllerHandle\r
+ );\r
+ }\r
+\r
+ return( Status );\r
}\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UnixSnpDriverBindingStop(\r
- IN EFI_DRIVER_BINDING_PROTOCOL* This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN UINTN NumberOfChildren,\r
- IN EFI_HANDLE* ChildHandleBuffer\r
- )\r
+ IN EFI_DRIVER_BINDING_PROTOCOL* This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN UINTN NumberOfChildren,\r
+ IN EFI_HANDLE* ChildHandleBuffer\r
+ )\r
{\r
- UNIX_SNP_PRIVATE_DATA* Private = NULL;\r
- EFI_SIMPLE_NETWORK_PROTOCOL* Snp;\r
- EFI_STATUS Status;\r
-\r
- //\r
- // Get our context back.\r
- //\r
- Status = gBS->OpenProtocol(\r
- ControllerHandle,\r
- &gEfiSimpleNetworkProtocolGuid,\r
- ( VOID ** ) &Snp,\r
- This->DriverBindingHandle,\r
- ControllerHandle,\r
- EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
- );\r
- if ( EFI_ERROR( Status ) )\r
- {\r
- return( EFI_UNSUPPORTED );\r
- }\r
-\r
- Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( Snp );\r
-\r
- Status = gBS->CloseProtocol(\r
- ControllerHandle,\r
- &gEfiUnixIoProtocolGuid,\r
- This->DriverBindingHandle,\r
- Private->DeviceHandle\r
- );\r
-\r
- Status = gBS->UninstallMultipleProtocolInterfaces(\r
- Private->DeviceHandle,\r
- &gEfiSimpleNetworkProtocolGuid,\r
- &Private->Snp,\r
- &gEfiDevicePathProtocolGuid,\r
- Private->DevicePath,\r
- NULL\r
- );\r
-\r
- FreePool( Private->InterfaceName );\r
- FreePool( Private->DevicePath );\r
- FreePool( Private );\r
-\r
- return( EFI_SUCCESS );\r
+ UNIX_SNP_PRIVATE_DATA* Private = NULL;\r
+ EFI_SIMPLE_NETWORK_PROTOCOL* Snp;\r
+ EFI_STATUS Status;\r
+\r
+ //\r
+ // Get our context back.\r
+ //\r
+ Status = gBS->OpenProtocol(\r
+ ControllerHandle,\r
+ &gEfiSimpleNetworkProtocolGuid,\r
+ ( VOID ** ) &Snp,\r
+ This->DriverBindingHandle,\r
+ ControllerHandle,\r
+ EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+ );\r
+ if ( EFI_ERROR( Status ) )\r
+ {\r
+ return( EFI_UNSUPPORTED );\r
+ }\r
+\r
+ Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( Snp );\r
+\r
+ Status = gBS->CloseProtocol(\r
+ ControllerHandle,\r
+ &gEfiUnixIoProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ Private->DeviceHandle\r
+ );\r
+\r
+ Status = gBS->UninstallMultipleProtocolInterfaces(\r
+ Private->DeviceHandle,\r
+ &gEfiSimpleNetworkProtocolGuid,\r
+ &Private->Snp,\r
+ &gEfiDevicePathProtocolGuid,\r
+ Private->DevicePath,\r
+ NULL\r
+ );\r
+\r
+ FreePool( Private->InterfaceName );\r
+ FreePool( Private->DevicePath );\r
+ FreePool( Private );\r
+\r
+ return( EFI_SUCCESS );\r
}\r
\r
\r
EFI_STATUS\r
EFIAPI\r
UnixSnpStart(\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL* This\r
- )\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL* This\r
+ )\r
{\r
- STATIC struct bpf_insn FilterInstructionTemplate[] =\r
- {\r
- // Load 4 bytes from the destination MAC address.\r
- BPF_STMT( BPF_LD + BPF_W + BPF_ABS, OFFSET_OF( EthernetHeader, DstAddr[ 0 ] ) ),\r
-\r
- // Compare to first 4 bytes of fake MAC address.\r
- BPF_JUMP( BPF_JMP + BPF_JEQ + BPF_K, 0x12345678, 0, 3 ),\r
-\r
- // Load remaining 2 bytes from the destination MAC address.\r
- BPF_STMT( BPF_LD + BPF_H + BPF_ABS, OFFSET_OF( EthernetHeader, DstAddr[ 4 ] ) ),\r
-\r
- // Compare to remaining 2 bytes of fake MAC address.\r
- BPF_JUMP( BPF_JMP + BPF_JEQ + BPF_K, 0x9ABC, 5, 0 ),\r
-\r
- // Load 4 bytes from the destination MAC address.\r
- BPF_STMT( BPF_LD + BPF_W + BPF_ABS, OFFSET_OF( EthernetHeader, DstAddr[ 0 ] ) ),\r
-\r
- // Compare to first 4 bytes of broadcast MAC address.\r
- BPF_JUMP( BPF_JMP + BPF_JEQ + BPF_K, 0xFFFFFFFF, 0, 2 ),\r
-\r
- // Load remaining 2 bytes from the destination MAC address.\r
- BPF_STMT( BPF_LD + BPF_H + BPF_ABS, OFFSET_OF( EthernetHeader, DstAddr[ 4 ] ) ),\r
-\r
- // Compare to remaining 2 bytes of broadcast MAC address.\r
- BPF_JUMP( BPF_JMP + BPF_JEQ + BPF_K, 0xFFFF, 1, 0 ),\r
-\r
- // Reject packet.\r
- BPF_STMT( BPF_RET + BPF_K, 0 ),\r
-\r
- // Receive entire packet.\r
- BPF_STMT( BPF_RET + BPF_K, -1 )\r
- };\r
- struct ifreq BoundIf;\r
- struct bpf_program BpfProgram;\r
- struct bpf_insn* FilterProgram;\r
- UNIX_SNP_PRIVATE_DATA* Private;\r
- EFI_STATUS Status;\r
- UINT32 Temp32;\r
- INTN Fd;\r
- INTN Result;\r
- INTN Value;\r
- UINT16 Temp16;\r
-\r
- Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
-\r
- switch ( Private->Snp.Mode->State )\r
- {\r
- case EfiSimpleNetworkStopped:\r
- break;\r
-\r
- case EfiSimpleNetworkStarted:\r
- case EfiSimpleNetworkInitialized:\r
- return( EFI_ALREADY_STARTED );\r
- break;\r
-\r
- default:\r
- return( EFI_DEVICE_ERROR );\r
- break;\r
- }\r
-\r
- if ( Private->BpfFd == 0 )\r
- {\r
- Status = OpenBpfFileDescriptor( Private, &Fd );\r
-\r
- if ( EFI_ERROR( Status ) )\r
- {\r
- goto ErrorExit;\r
- }\r
-\r
- Private->BpfFd = Fd;\r
-\r
- //\r
- // Associate our interface with this BPF file descriptor.\r
- //\r
- AsciiStrCpy( BoundIf.ifr_name, Private->InterfaceName );\r
- Result = Private->UnixThunk->IoCtl( Private->BpfFd, BIOCSETIF, &BoundIf );\r
-\r
- if ( Result < 0 )\r
- {\r
- goto DeviceErrorExit;\r
- }\r
-\r
- //\r
- // Enable immediate mode and find out the buffer size.\r
- //\r
- Value = 1;\r
- Result = Private->UnixThunk->IoCtl( Private->BpfFd, BIOCIMMEDIATE, &Value );\r
-\r
- if ( Result < 0 )\r
- {\r
- goto DeviceErrorExit;\r
- }\r
-\r
- //\r
- // Enable non-blocking I/O.\r
- //\r
-\r
- Value = Private->UnixThunk->Fcntl( Private->BpfFd, F_GETFL, 0 );\r
-\r
- if ( Value == -1 )\r
- {\r
- goto DeviceErrorExit;\r
- }\r
-\r
- Value |= O_NONBLOCK;\r
-\r
- Result = Private->UnixThunk->Fcntl( Private->BpfFd, F_