Fix issue with fixing tabs.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11297 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@ -111,8 +111,8 @@ CpuSetMemoryAttributes (
|
|||||||
|
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
InitializeExceptions (
|
InitializeExceptions (
|
||||||
\s\sIN EFI_CPU_ARCH_PROTOCOL *Cpu
|
IN EFI_CPU_ARCH_PROTOCOL *Cpu
|
||||||
\s\s);
|
);
|
||||||
|
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
SyncCacheConfig (
|
SyncCacheConfig (
|
||||||
|
@ -338,11 +338,11 @@ UpdatePageEntries (
|
|||||||
// modify cacheability attributes
|
// modify cacheability attributes
|
||||||
EntryMask |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_MASK;
|
EntryMask |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_MASK;
|
||||||
if (FeaturePcdGet(PcdEfiUncachedMemoryToStronglyOrdered)) {
|
if (FeaturePcdGet(PcdEfiUncachedMemoryToStronglyOrdered)) {
|
||||||
\s\s\s\s // map to strongly ordered
|
// map to strongly ordered
|
||||||
\s\s\s\s EntryValue |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_STRONGLY_ORDERED; // TEX[2:0] = 0, C=0, B=0
|
EntryValue |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_STRONGLY_ORDERED; // TEX[2:0] = 0, C=0, B=0
|
||||||
} else {
|
} else {
|
||||||
\s\s // map to normal non-cachable
|
// map to normal non-cachable
|
||||||
\s\s EntryValue |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_NON_CACHEABLE; // TEX [2:0]= 001 = 0x2, B=0, C=0
|
EntryValue |= TT_DESCRIPTOR_PAGE_CACHE_POLICY_NON_CACHEABLE; // TEX [2:0]= 001 = 0x2, B=0, C=0
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -486,11 +486,11 @@ UpdateSectionEntries (
|
|||||||
// modify cacheability attributes
|
// modify cacheability attributes
|
||||||
EntryMask |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_MASK;
|
EntryMask |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_MASK;
|
||||||
if (FeaturePcdGet(PcdEfiUncachedMemoryToStronglyOrdered)) {
|
if (FeaturePcdGet(PcdEfiUncachedMemoryToStronglyOrdered)) {
|
||||||
\s\s\s\s // map to strongly ordered
|
// map to strongly ordered
|
||||||
\s\s\s\s EntryValue |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_STRONGLY_ORDERED; // TEX[2:0] = 0, C=0, B=0
|
EntryValue |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_STRONGLY_ORDERED; // TEX[2:0] = 0, C=0, B=0
|
||||||
} else {
|
} else {
|
||||||
\s\s // map to normal non-cachable
|
// map to normal non-cachable
|
||||||
\s\s EntryValue |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_NON_CACHEABLE; // TEX [2:0]= 001 = 0x2, B=0, C=0
|
EntryValue |= TT_DESCRIPTOR_SECTION_CACHE_POLICY_NON_CACHEABLE; // TEX [2:0]= 001 = 0x2, B=0, C=0
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@
|
|||||||
#define DMC_DIRECT_CMD_MEMCMD_NOP (0x3 << 18)
|
#define DMC_DIRECT_CMD_MEMCMD_NOP (0x3 << 18)
|
||||||
#define DMC_DIRECT_CMD_MEMCMD_DPD (0x1 << 22)
|
#define DMC_DIRECT_CMD_MEMCMD_DPD (0x1 << 22)
|
||||||
#define DMC_DIRECT_CMD_BANKADDR(n) ((n & 0x3) << 16)
|
#define DMC_DIRECT_CMD_BANKADDR(n) ((n & 0x3) << 16)
|
||||||
#define DMC_DIRECT_CMD_CHIP_ADDR(n)\s\s\s\s((n & 0x3) << 20)
|
#define DMC_DIRECT_CMD_CHIP_ADDR(n) ((n & 0x3) << 20)
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -163,25 +163,25 @@ VOID PL341DmcInit(struct pl341_dmc_config *config) {
|
|||||||
//
|
//
|
||||||
|
|
||||||
if (config->has_qos) {
|
if (config->has_qos) {
|
||||||
\s\s// CLCD AXIID = 000
|
// CLCD AXIID = 000
|
||||||
\s\sDmcWriteReg(DMC_ID_0_CFG_REG, DMC_ID_CFG_QOS_ENABLE | DMC_ID_CFG_QOS_MIN);
|
DmcWriteReg(DMC_ID_0_CFG_REG, DMC_ID_CFG_QOS_ENABLE | DMC_ID_CFG_QOS_MIN);
|
||||||
|
|
||||||
\s\s// Default disable QoS
|
// Default disable QoS
|
||||||
\s\sDmcWriteReg(DMC_ID_1_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
DmcWriteReg(DMC_ID_1_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
||||||
\s\sDmcWriteReg(DMC_ID_2_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
DmcWriteReg(DMC_ID_2_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
||||||
\s\sDmcWriteReg(DMC_ID_3_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
DmcWriteReg(DMC_ID_3_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
||||||
\s\sDmcWriteReg(DMC_ID_4_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
DmcWriteReg(DMC_ID_4_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
||||||
\s\sDmcWriteReg(DMC_ID_5_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
DmcWriteReg(DMC_ID_5_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
||||||
\s\sDmcWriteReg(DMC_ID_6_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
DmcWriteReg(DMC_ID_6_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
||||||
\s\sDmcWriteReg(DMC_ID_7_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
DmcWriteReg(DMC_ID_7_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
||||||
\s\sDmcWriteReg(DMC_ID_8_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
DmcWriteReg(DMC_ID_8_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
||||||
\s\sDmcWriteReg(DMC_ID_9_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
DmcWriteReg(DMC_ID_9_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
||||||
\s\sDmcWriteReg(DMC_ID_10_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
DmcWriteReg(DMC_ID_10_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
||||||
\s\sDmcWriteReg(DMC_ID_11_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
DmcWriteReg(DMC_ID_11_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
||||||
\s\sDmcWriteReg(DMC_ID_12_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
DmcWriteReg(DMC_ID_12_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
||||||
\s\sDmcWriteReg(DMC_ID_13_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
DmcWriteReg(DMC_ID_13_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
||||||
\s\sDmcWriteReg(DMC_ID_14_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
DmcWriteReg(DMC_ID_14_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
||||||
\s\sDmcWriteReg(DMC_ID_15_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
DmcWriteReg(DMC_ID_15_CFG_REG, DMC_ID_CFG_QOS_DISABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -231,104 +231,104 @@ VOID PL341DmcInit(struct pl341_dmc_config *config) {
|
|||||||
// |======================================
|
// |======================================
|
||||||
DmcWriteReg(DMC_MEMORY_CFG3_REG, config->memory_cfg3);
|
DmcWriteReg(DMC_MEMORY_CFG3_REG, config->memory_cfg3);
|
||||||
|
|
||||||
\s\s// |========================================================
|
// |========================================================
|
||||||
\s\s// |Set Test Chip PHY Registers via PL341 User Config Reg
|
// |Set Test Chip PHY Registers via PL341 User Config Reg
|
||||||
\s\s// |Note that user_cfgX registers are Write Only
|
// |Note that user_cfgX registers are Write Only
|
||||||
\s\s// |
|
// |
|
||||||
\s\s// |DLL Freq set = 250MHz - 266MHz
|
// |DLL Freq set = 250MHz - 266MHz
|
||||||
\s\s// |========================================================
|
// |========================================================
|
||||||
\s\sDmcWriteReg(DMC_USER_0_CFG_REG, 0x7C924924);
|
DmcWriteReg(DMC_USER_0_CFG_REG, 0x7C924924);
|
||||||
|
|
||||||
\s\s// user_config2
|
// user_config2
|
||||||
\s\s// ------------
|
// ------------
|
||||||
\s\s// Set defaults before calibrating the DDR2 buffer impendence
|
// Set defaults before calibrating the DDR2 buffer impendence
|
||||||
\s\s// -Disable ODT
|
// -Disable ODT
|
||||||
\s\s// -Default drive strengths
|
// -Default drive strengths
|
||||||
\s\sDmcWriteReg(DMC_USER_2_CFG_REG, 0x40000198);
|
DmcWriteReg(DMC_USER_2_CFG_REG, 0x40000198);
|
||||||
|
|
||||||
\s\s// |=======================================================
|
// |=======================================================
|
||||||
\s\s// |Auto calibrate the DDR2 buffers impendence
|
// |Auto calibrate the DDR2 buffers impendence
|
||||||
\s\s// |=======================================================
|
// |=======================================================
|
||||||
\s\sval32 = DmcReadReg(DMC_USER_STATUS_REG);
|
val32 = DmcReadReg(DMC_USER_STATUS_REG);
|
||||||
\s\swhile (!(val32 & 0x100)) {
|
while (!(val32 & 0x100)) {
|
||||||
\s\s val32 = DmcReadReg(DMC_USER_STATUS_REG);
|
val32 = DmcReadReg(DMC_USER_STATUS_REG);
|
||||||
\s\s}
|
}
|
||||||
|
|
||||||
\s\s// Set the output driven strength
|
// Set the output driven strength
|
||||||
\s\sDmcWriteReg(DMC_USER_2_CFG_REG, 0x40800000 |
|
DmcWriteReg(DMC_USER_2_CFG_REG, 0x40800000 |
|
||||||
\s\s\s\s (TC_UIOLHXC_VALUE << TC_UIOLHNC_SHIFT) |
|
(TC_UIOLHXC_VALUE << TC_UIOLHNC_SHIFT) |
|
||||||
\s\s\s\s (TC_UIOLHXC_VALUE << TC_UIOLHPC_SHIFT) |
|
(TC_UIOLHXC_VALUE << TC_UIOLHPC_SHIFT) |
|
||||||
\s\s\s\s (0x1 << TC_UIOHOCT_SHIFT) |
|
(0x1 << TC_UIOHOCT_SHIFT) |
|
||||||
\s\s\s\s (0x1 << TC_UIOHSTOP_SHIFT));
|
(0x1 << TC_UIOHSTOP_SHIFT));
|
||||||
|
|
||||||
\s\s// |======================================
|
// |======================================
|
||||||
\s\s// | Set PL341 Feature Control Register
|
// | Set PL341 Feature Control Register
|
||||||
\s\s// |======================================
|
// |======================================
|
||||||
\s\s// | Disable early BRESP - use to optimise CLCD performance
|
// | Disable early BRESP - use to optimise CLCD performance
|
||||||
\s\sDmcWriteReg(DMC_FEATURE_CRTL_REG, 0x00000001);
|
DmcWriteReg(DMC_FEATURE_CRTL_REG, 0x00000001);
|
||||||
|
|
||||||
//=================
|
//=================
|
||||||
// Config memories
|
// Config memories
|
||||||
//=================
|
//=================
|
||||||
|
|
||||||
for (chip = 0; chip <= config-> max_chip; chip++) {
|
for (chip = 0; chip <= config-> max_chip; chip++) {
|
||||||
\s\s// send nop
|
// send nop
|
||||||
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_NOP);
|
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_NOP);
|
||||||
\s\s// pre-charge all
|
// pre-charge all
|
||||||
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_PRECHARGEALL);
|
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_PRECHARGEALL);
|
||||||
|
|
||||||
\s\s// delay
|
// delay
|
||||||
\s\sfor (i = 0; i < 10; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
\s\s val32 = DmcReadReg(DMC_STATUS_REG);
|
val32 = DmcReadReg(DMC_STATUS_REG);
|
||||||
\s\s}
|
}
|
||||||
|
|
||||||
\s\s// set (EMR2) extended mode register 2
|
// set (EMR2) extended mode register 2
|
||||||
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG,
|
DmcWriteReg(DMC_DIRECT_CMD_REG,
|
||||||
\s\s\s\s DMC_DIRECT_CMD_CHIP_ADDR(chip) |
|
DMC_DIRECT_CMD_CHIP_ADDR(chip) |
|
||||||
\s\s\s\s DMC_DIRECT_CMD_BANKADDR(2) |
|
DMC_DIRECT_CMD_BANKADDR(2) |
|
||||||
\s\s\s\s DMC_DIRECT_CMD_MEMCMD_EXTMODEREG);
|
DMC_DIRECT_CMD_MEMCMD_EXTMODEREG);
|
||||||
\s\s// set (EMR3) extended mode register 3
|
// set (EMR3) extended mode register 3
|
||||||
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG,
|
DmcWriteReg(DMC_DIRECT_CMD_REG,
|
||||||
\s\s\s\s DMC_DIRECT_CMD_CHIP_ADDR(chip) |
|
DMC_DIRECT_CMD_CHIP_ADDR(chip) |
|
||||||
\s\s\s\s DMC_DIRECT_CMD_BANKADDR(3) |
|
DMC_DIRECT_CMD_BANKADDR(3) |
|
||||||
\s\s\s\s DMC_DIRECT_CMD_MEMCMD_EXTMODEREG);
|
DMC_DIRECT_CMD_MEMCMD_EXTMODEREG);
|
||||||
|
|
||||||
\s\s// =================================
|
// =================================
|
||||||
\s\s// set (EMR) Extended Mode Register
|
// set (EMR) Extended Mode Register
|
||||||
\s\s// ==================================
|
// ==================================
|
||||||
\s\s// Put into OCD default state
|
// Put into OCD default state
|
||||||
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG,
|
DmcWriteReg(DMC_DIRECT_CMD_REG,
|
||||||
\s\s\s\s DMC_DIRECT_CMD_CHIP_ADDR(chip) |
|
DMC_DIRECT_CMD_CHIP_ADDR(chip) |
|
||||||
\s\s\s\s DMC_DIRECT_CMD_BANKADDR(1) |
|
DMC_DIRECT_CMD_BANKADDR(1) |
|
||||||
\s\s\s\s DMC_DIRECT_CMD_MEMCMD_EXTMODEREG);
|
DMC_DIRECT_CMD_MEMCMD_EXTMODEREG);
|
||||||
|
|
||||||
\s\s// ===========================================================
|
// ===========================================================
|
||||||
\s\s// set (MR) mode register - With DLL reset
|
// set (MR) mode register - With DLL reset
|
||||||
\s\s// ===========================================================
|
// ===========================================================
|
||||||
\s\s// Burst Length = 4 (010)
|
// Burst Length = 4 (010)
|
||||||
\s\s// Burst Type = Seq (0)
|
// Burst Type = Seq (0)
|
||||||
\s\s// Latency = 4 (100)
|
// Latency = 4 (100)
|
||||||
\s\s// Test mode = Off (0)
|
// Test mode = Off (0)
|
||||||
\s\s// DLL reset = Yes (1)
|
// DLL reset = Yes (1)
|
||||||
\s\s// Wr Recovery = 4 (011)
|
// Wr Recovery = 4 (011)
|
||||||
\s\s// PD = Normal (0)
|
// PD = Normal (0)
|
||||||
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00080742);
|
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00080742);
|
||||||
|
|
||||||
\s\s// pre-charge all
|
// pre-charge all
|
||||||
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_PRECHARGEALL);
|
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_PRECHARGEALL);
|
||||||
\s\s// auto-refresh
|
// auto-refresh
|
||||||
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH);
|
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH);
|
||||||
\s\s// auto-refresh
|
// auto-refresh
|
||||||
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH);
|
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH);
|
||||||
|
|
||||||
\s\s// delay
|
// delay
|
||||||
\s\sfor (i = 0; i < 10; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
\s\s val32 = DmcReadReg(DMC_STATUS_REG);
|
val32 = DmcReadReg(DMC_STATUS_REG);
|
||||||
\s\s}
|
}
|
||||||
|
|
||||||
\s\s// ===========================================================
|
// ===========================================================
|
||||||
\s\s// set (MR) mode register - Without DLL reset
|
// set (MR) mode register - Without DLL reset
|
||||||
\s\s// ===========================================================
|
// ===========================================================
|
||||||
// auto-refresh
|
// auto-refresh
|
||||||
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH);
|
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH);
|
||||||
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00080642);
|
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00080642);
|
||||||
@ -338,26 +338,26 @@ VOID PL341DmcInit(struct pl341_dmc_config *config) {
|
|||||||
val32 = DmcReadReg(DMC_STATUS_REG);
|
val32 = DmcReadReg(DMC_STATUS_REG);
|
||||||
}
|
}
|
||||||
|
|
||||||
\s\s// ======================================================
|
// ======================================================
|
||||||
\s\s// set (EMR) extended mode register - Enable OCD defaults
|
// set (EMR) extended mode register - Enable OCD defaults
|
||||||
\s\s// ======================================================
|
// ======================================================
|
||||||
\s\sval32 = 0; //NOP
|
val32 = 0; //NOP
|
||||||
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00090000 |
|
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00090000 |
|
||||||
\s\s\s\s (DDR_EMR_OCD_DEFAULT << DDR_EMR_OCD_SHIFT) |
|
(DDR_EMR_OCD_DEFAULT << DDR_EMR_OCD_SHIFT) |
|
||||||
\s\s\s\s DDR_EMR_RTT_75R |
|
DDR_EMR_RTT_75R |
|
||||||
\s\s\s\s (DDR_EMR_ODS_VAL << DDR_EMR_ODS_MASK));
|
(DDR_EMR_ODS_VAL << DDR_EMR_ODS_MASK));
|
||||||
|
|
||||||
\s\s// delay
|
// delay
|
||||||
\s\sfor (i = 0; i < 10; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
\s\s val32 = DmcReadReg(DMC_STATUS_REG);
|
val32 = DmcReadReg(DMC_STATUS_REG);
|
||||||
\s\s}
|
}
|
||||||
|
|
||||||
\s\s// Set (EMR) extended mode register - OCD Exit
|
// Set (EMR) extended mode register - OCD Exit
|
||||||
\s\sval32 = 0; //NOP
|
val32 = 0; //NOP
|
||||||
\s\sDmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00090000 |
|
DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(chip) | 0x00090000 |
|
||||||
\s\s\s\s (DDR_EMR_OCD_NS << DDR_EMR_OCD_SHIFT) |
|
(DDR_EMR_OCD_NS << DDR_EMR_OCD_SHIFT) |
|
||||||
\s\s\s\s DDR_EMR_RTT_75R |
|
DDR_EMR_RTT_75R |
|
||||||
\s\s\s\s (DDR_EMR_ODS_VAL << DDR_EMR_ODS_MASK));
|
(DDR_EMR_ODS_VAL << DDR_EMR_ODS_MASK));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,11 +21,11 @@ EFIAPI
|
|||||||
PL390GicEnableInterruptInterface (
|
PL390GicEnableInterruptInterface (
|
||||||
IN INTN GicInterruptInterfaceBase
|
IN INTN GicInterruptInterfaceBase
|
||||||
)
|
)
|
||||||
{\s\s
|
{
|
||||||
\s\s/*
|
/*
|
||||||
\s\s * Enable the CPU interface in Non-Secure world
|
* Enable the CPU interface in Non-Secure world
|
||||||
\s\s * Note: The ICCICR register is banked when Security extensions are implemented\s\s
|
* Note: The ICCICR register is banked when Security extensions are implemented
|
||||||
\s\s */
|
*/
|
||||||
MmioWrite32(GicInterruptInterfaceBase + GIC_ICCICR,0x00000001);
|
MmioWrite32(GicInterruptInterfaceBase + GIC_ICCICR,0x00000001);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ PL390GicSendSgiTo (
|
|||||||
IN INTN CPUTargetList
|
IN INTN CPUTargetList
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
\s\sMmioWrite32(GicDistributorBase + GIC_ICDSGIR, ((TargetListFilter & 0x3) << 24) | ((CPUTargetList & 0xFF) << 16));
|
MmioWrite32(GicDistributorBase + GIC_ICDSGIR, ((TargetListFilter & 0x3) << 24) | ((CPUTargetList & 0xFF) << 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT32
|
UINT32
|
||||||
@ -65,9 +65,9 @@ PL390GicAcknowledgeSgiFrom (
|
|||||||
InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);
|
InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);
|
||||||
|
|
||||||
//Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID
|
//Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID
|
||||||
\s\sif (((CoreId & 0x7) << 10) == (InterruptId & 0x1C00)) {
|
if (((CoreId & 0x7) << 10) == (InterruptId & 0x1C00)) {
|
||||||
\s\s //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR
|
//Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR
|
||||||
\s\s\s\sMmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);
|
MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
@ -87,9 +87,9 @@ PL390GicAcknowledgeSgi2From (
|
|||||||
InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);
|
InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);
|
||||||
|
|
||||||
//Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID
|
//Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID
|
||||||
\s\sif((((CoreId & 0x7) << 10) | (SgiId & 0x3FF)) == (InterruptId & 0x1FFF)) {
|
if((((CoreId & 0x7) << 10) | (SgiId & 0x3FF)) == (InterruptId & 0x1FFF)) {
|
||||||
\s\s //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR
|
//Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR
|
||||||
\s\s\s\sMmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);
|
MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -34,11 +34,11 @@ PL390GicSetupNonSecure (
|
|||||||
//Check if there are any pending interrupts
|
//Check if there are any pending interrupts
|
||||||
while(0 != (MmioRead32(GicDistributorBase + GIC_ICDICPR) & 0xF))
|
while(0 != (MmioRead32(GicDistributorBase + GIC_ICDICPR) & 0xF))
|
||||||
{
|
{
|
||||||
\s\s //Some of the SGI's are still pending, read Ack register and send End of Interrupt Signal
|
//Some of the SGI's are still pending, read Ack register and send End of Interrupt Signal
|
||||||
\s\s UINTN InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);
|
UINTN InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);
|
||||||
|
|
||||||
\s\s //Write to End of interrupt signal
|
//Write to End of interrupt signal
|
||||||
\s\s MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);
|
MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure all GIC interrupts are Non-Secure
|
// Ensure all GIC interrupts are Non-Secure
|
||||||
@ -56,19 +56,19 @@ PL390GicEnableInterruptInterface (
|
|||||||
IN INTN GicInterruptInterfaceBase
|
IN INTN GicInterruptInterfaceBase
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
\s\sMmioWrite32(GicInterruptInterfaceBase + GIC_ICCPMR, 0x000000FF); /* Set Priority Mask to allow interrupts */
|
MmioWrite32(GicInterruptInterfaceBase + GIC_ICCPMR, 0x000000FF); /* Set Priority Mask to allow interrupts */
|
||||||
|
|
||||||
\s\s/*
|
/*
|
||||||
\s\s * Enable CPU interface in Secure world
|
* Enable CPU interface in Secure world
|
||||||
* Enable CPU inteface in Non-secure World
|
* Enable CPU inteface in Non-secure World
|
||||||
\s\s * Signal Secure Interrupts to CPU using FIQ line *
|
* Signal Secure Interrupts to CPU using FIQ line *
|
||||||
\s\s */
|
*/
|
||||||
MmioWrite32(GicInterruptInterfaceBase + GIC_ICCICR,
|
MmioWrite32(GicInterruptInterfaceBase + GIC_ICCICR,
|
||||||
\s\s\s\sGIC_ICCICR_ENABLE_SECURE(1) |
|
GIC_ICCICR_ENABLE_SECURE(1) |
|
||||||
\s\s\s\sGIC_ICCICR_ENABLE_NS(1) |
|
GIC_ICCICR_ENABLE_NS(1) |
|
||||||
\s\s\s\sGIC_ICCICR_ACK_CTL(0) |
|
GIC_ICCICR_ACK_CTL(0) |
|
||||||
\s\s\s\sGIC_ICCICR_SIGNAL_SECURE_TO_FIQ(1) |
|
GIC_ICCICR_SIGNAL_SECURE_TO_FIQ(1) |
|
||||||
\s\s\s\sGIC_ICCICR_USE_SBPR(0));
|
GIC_ICCICR_USE_SBPR(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
@ -88,7 +88,7 @@ PL390GicSendSgiTo (
|
|||||||
IN INTN CPUTargetList
|
IN INTN CPUTargetList
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
\s\sMmioWrite32(GicDistributorBase + GIC_ICDSGIR, ((TargetListFilter & 0x3) << 24) | ((CPUTargetList & 0xFF) << 16));
|
MmioWrite32(GicDistributorBase + GIC_ICDSGIR, ((TargetListFilter & 0x3) << 24) | ((CPUTargetList & 0xFF) << 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT32
|
UINT32
|
||||||
@ -103,9 +103,9 @@ PL390GicAcknowledgeSgiFrom (
|
|||||||
InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);
|
InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);
|
||||||
|
|
||||||
//Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID
|
//Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID
|
||||||
\s\sif (((CoreId & 0x7) << 10) == (InterruptId & 0x1C00)) {
|
if (((CoreId & 0x7) << 10) == (InterruptId & 0x1C00)) {
|
||||||
\s\s //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR
|
//Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR
|
||||||
\s\s\s\sMmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);
|
MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
@ -125,9 +125,9 @@ PL390GicAcknowledgeSgi2From (
|
|||||||
InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);
|
InterruptId = MmioRead32(GicInterruptInterfaceBase + GIC_ICCIAR);
|
||||||
|
|
||||||
//Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID
|
//Check if the Interrupt ID is valid, The read from Interrupt Ack register returns CPU ID and Interrupt ID
|
||||||
\s\sif((((CoreId & 0x7) << 10) | (SgiId & 0x3FF)) == (InterruptId & 0x1FFF)) {
|
if((((CoreId & 0x7) << 10) | (SgiId & 0x3FF)) == (InterruptId & 0x1FFF)) {
|
||||||
\s\s //Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR
|
//Got SGI number 0 hence signal End of Interrupt by writing to ICCEOIR
|
||||||
\s\s\s\sMmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);
|
MmioWrite32(GicInterruptInterfaceBase + GIC_ICCEIOR, InterruptId);
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -17,32 +17,32 @@
|
|||||||
|
|
||||||
|
|
||||||
struct pl341_dmc_config {
|
struct pl341_dmc_config {
|
||||||
UINTN\s\sbase; // base address for the controller
|
UINTN base; // base address for the controller
|
||||||
UINTN\s\shas_qos; // has QoS registers
|
UINTN has_qos; // has QoS registers
|
||||||
UINTN\s\smax_chip; // number of memory chips accessible
|
UINTN max_chip; // number of memory chips accessible
|
||||||
UINT32\s\srefresh_prd;
|
UINT32 refresh_prd;
|
||||||
UINT32\s\scas_latency;
|
UINT32 cas_latency;
|
||||||
UINT32\s\swrite_latency;
|
UINT32 write_latency;
|
||||||
UINT32\s\st_mrd;
|
UINT32 t_mrd;
|
||||||
UINT32\s\st_ras;
|
UINT32 t_ras;
|
||||||
UINT32\s\st_rc;
|
UINT32 t_rc;
|
||||||
UINT32\s\st_rcd;
|
UINT32 t_rcd;
|
||||||
UINT32\s\st_rfc;
|
UINT32 t_rfc;
|
||||||
UINT32\s\st_rp;
|
UINT32 t_rp;
|
||||||
UINT32\s\st_rrd;
|
UINT32 t_rrd;
|
||||||
UINT32\s\st_wr;
|
UINT32 t_wr;
|
||||||
UINT32\s\st_wtr;
|
UINT32 t_wtr;
|
||||||
UINT32\s\st_xp;
|
UINT32 t_xp;
|
||||||
UINT32\s\st_xsr;
|
UINT32 t_xsr;
|
||||||
UINT32\s\st_esr;
|
UINT32 t_esr;
|
||||||
UINT32\s\smemory_cfg;
|
UINT32 memory_cfg;
|
||||||
UINT32\s\smemory_cfg2;
|
UINT32 memory_cfg2;
|
||||||
UINT32\s\smemory_cfg3;
|
UINT32 memory_cfg3;
|
||||||
UINT32\s\schip_cfg0;
|
UINT32 chip_cfg0;
|
||||||
UINT32\s\schip_cfg1;
|
UINT32 chip_cfg1;
|
||||||
UINT32\s\schip_cfg2;
|
UINT32 chip_cfg2;
|
||||||
UINT32\s\schip_cfg3;
|
UINT32 chip_cfg3;
|
||||||
UINT32\s\st_faw;
|
UINT32 t_faw;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Memory config bit fields */
|
/* Memory config bit fields */
|
||||||
@ -60,21 +60,21 @@ struct pl341_dmc_config {
|
|||||||
#define DMC_MEMORY_CONFIG_BURST_4 (0x2 << 15)
|
#define DMC_MEMORY_CONFIG_BURST_4 (0x2 << 15)
|
||||||
#define DMC_MEMORY_CONFIG_BURST_8 (0x3 << 15)
|
#define DMC_MEMORY_CONFIG_BURST_8 (0x3 << 15)
|
||||||
#define DMC_MEMORY_CONFIG_BURST_16 (0x4 << 15)
|
#define DMC_MEMORY_CONFIG_BURST_16 (0x4 << 15)
|
||||||
#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_1\s\s\s\s(0x0 << 21)
|
#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_1 (0x0 << 21)
|
||||||
#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_2\s\s\s\s(0x1 << 21)
|
#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_2 (0x1 << 21)
|
||||||
#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_3\s\s\s\s(0x2 << 21)
|
#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_3 (0x2 << 21)
|
||||||
#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_4\s\s\s\s(0x3 << 21)
|
#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_4 (0x3 << 21)
|
||||||
|
|
||||||
#define DMC_MEMORY_CFG2_CLK_ASYNC\s\s\s\s(0x0 << 0)
|
#define DMC_MEMORY_CFG2_CLK_ASYNC (0x0 << 0)
|
||||||
#define DMC_MEMORY_CFG2_CLK_SYNC\s\s\s\s(0x1 << 0)
|
#define DMC_MEMORY_CFG2_CLK_SYNC (0x1 << 0)
|
||||||
#define DMC_MEMORY_CFG2_DQM_INIT\s\s\s\s(0x1 << 2)
|
#define DMC_MEMORY_CFG2_DQM_INIT (0x1 << 2)
|
||||||
#define DMC_MEMORY_CFG2_CKE_INIT\s\s\s\s(0x1 << 3)
|
#define DMC_MEMORY_CFG2_CKE_INIT (0x1 << 3)
|
||||||
#define DMC_MEMORY_CFG2_BANK_BITS_2\s\s\s\s(0x0 << 4)
|
#define DMC_MEMORY_CFG2_BANK_BITS_2 (0x0 << 4)
|
||||||
#define DMC_MEMORY_CFG2_BANK_BITS_3\s\s\s\s(0x3 << 4)
|
#define DMC_MEMORY_CFG2_BANK_BITS_3 (0x3 << 4)
|
||||||
#define DMC_MEMORY_CFG2_MEM_WIDTH_16\s\s\s\s(0x0 << 6)
|
#define DMC_MEMORY_CFG2_MEM_WIDTH_16 (0x0 << 6)
|
||||||
#define DMC_MEMORY_CFG2_MEM_WIDTH_32\s\s\s\s(0x1 << 6)
|
#define DMC_MEMORY_CFG2_MEM_WIDTH_32 (0x1 << 6)
|
||||||
#define DMC_MEMORY_CFG2_MEM_WIDTH_64\s\s\s\s(0x2 << 6)
|
#define DMC_MEMORY_CFG2_MEM_WIDTH_64 (0x2 << 6)
|
||||||
#define DMC_MEMORY_CFG2_MEM_WIDTH_RESERVED\s\s(0x3 << 6)
|
#define DMC_MEMORY_CFG2_MEM_WIDTH_RESERVED (0x3 << 6)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
#define L230_TAG_LATENCY 0x108
|
#define L230_TAG_LATENCY 0x108
|
||||||
#define L230_DATA_LATENCY 0x10C
|
#define L230_DATA_LATENCY 0x10C
|
||||||
#define L2X0_INTCLEAR 0x220
|
#define L2X0_INTCLEAR 0x220
|
||||||
#define L2X0_CACHE_SYNC\s\s\s\s\s\s0x730
|
#define L2X0_CACHE_SYNC 0x730
|
||||||
#define L2X0_INVWAY 0x77C
|
#define L2X0_INVWAY 0x77C
|
||||||
#define L2X0_CLEAN_WAY 0x7BC
|
#define L2X0_CLEAN_WAY 0x7BC
|
||||||
#define L2X0_PFCTRL 0xF60
|
#define L2X0_PFCTRL 0xF60
|
||||||
|
@ -57,4 +57,4 @@ struct _VIRTUAL_UNCACHED_PAGES_PROTOCOL {
|
|||||||
|
|
||||||
extern EFI_GUID gVirtualUncachedPagesProtocolGuid;
|
extern EFI_GUID gVirtualUncachedPagesProtocolGuid;
|
||||||
|
|
||||||
#endif\s\s
|
#endif
|
||||||
|
@ -58,18 +58,18 @@ ASM_PFX(ArmEnableInstructionCache):
|
|||||||
orr r0,r0,r1 @Set I bit
|
orr r0,r0,r1 @Set I bit
|
||||||
mcr p15,0,r0,c1,c0,0 @Write control register configuration data
|
mcr p15,0,r0,c1,c0,0 @Write control register configuration data
|
||||||
bx LR
|
bx LR
|
||||||
\s\s
|
|
||||||
ASM_PFX(ArmDisableInstructionCache):
|
ASM_PFX(ArmDisableInstructionCache):
|
||||||
ldr r1,=IC_ON
|
ldr r1,=IC_ON
|
||||||
mrc p15,0,r0,c1,c0,0 @Read control register configuration data
|
mrc p15,0,r0,c1,c0,0 @Read control register configuration data
|
||||||
bic r0,r0,r1 @Clear I bit.
|
bic r0,r0,r1 @Clear I bit.
|
||||||
mcr p15,0,r0,c1,c0,0 @Write control register configuration data
|
mcr p15,0,r0,c1,c0,0 @Write control register configuration data
|
||||||
bx LR
|
bx LR
|
||||||
\s\s
|
|
||||||
ASM_PFX(ArmInvalidateInstructionCache):
|
ASM_PFX(ArmInvalidateInstructionCache):
|
||||||
mov r0,#0
|
mov r0,#0
|
||||||
mcr p15,0,r0,c7,c5,0 @Invalidate entire Instruction cache.
|
mcr p15,0,r0,c7,c5,0 @Invalidate entire Instruction cache.
|
||||||
\s\s @Also flushes the branch target cache.
|
@Also flushes the branch target cache.
|
||||||
mov r0,#0
|
mov r0,#0
|
||||||
mcr p15,0,r0,c7,c10,4 @Data write buffer
|
mcr p15,0,r0,c7,c10,4 @Data write buffer
|
||||||
bx LR
|
bx LR
|
||||||
@ -99,7 +99,7 @@ ASM_PFX(ArmEnableDataCache):
|
|||||||
orr R0,R0,R1 @Set C bit
|
orr R0,R0,R1 @Set C bit
|
||||||
mcr p15,0,r0,c1,c0,0 @Write control register configuration data
|
mcr p15,0,r0,c1,c0,0 @Write control register configuration data
|
||||||
bx LR
|
bx LR
|
||||||
\s\s
|
|
||||||
ASM_PFX(ArmDisableDataCache):
|
ASM_PFX(ArmDisableDataCache):
|
||||||
ldr R1,=DC_ON
|
ldr R1,=DC_ON
|
||||||
mrc p15,0,R0,c1,c0,0 @Read control register configuration data
|
mrc p15,0,R0,c1,c0,0 @Read control register configuration data
|
||||||
@ -111,7 +111,7 @@ ASM_PFX(ArmCleanDataCache):
|
|||||||
mrc p15,0,r15,c7,c10,3
|
mrc p15,0,r15,c7,c10,3
|
||||||
bne ASM_PFX(ArmCleanDataCache)
|
bne ASM_PFX(ArmCleanDataCache)
|
||||||
mov R0,#0
|
mov R0,#0
|
||||||
mcr p15,0,R0,c7,c10,4\s\s@Drain write buffer
|
mcr p15,0,R0,c7,c10,4 @Drain write buffer
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ASM_PFX(ArmInvalidateDataCache):
|
ASM_PFX(ArmInvalidateDataCache):
|
||||||
@ -125,7 +125,7 @@ ASM_PFX(ArmCleanInvalidateDataCache):
|
|||||||
mrc p15,0,r15,c7,c14,3
|
mrc p15,0,r15,c7,c14,3
|
||||||
bne ASM_PFX(ArmCleanInvalidateDataCache)
|
bne ASM_PFX(ArmCleanInvalidateDataCache)
|
||||||
mov R0,#0
|
mov R0,#0
|
||||||
mcr p15,0,R0,c7,c10,4\s\s @Drain write buffer
|
mcr p15,0,R0,c7,c10,4 @Drain write buffer
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ASM_PFX(ArmEnableBranchPrediction):
|
ASM_PFX(ArmEnableBranchPrediction):
|
||||||
|
@ -112,7 +112,7 @@ ArmCleanDataCache
|
|||||||
MRC p15,0,r15,c7,c10,3
|
MRC p15,0,r15,c7,c10,3
|
||||||
BNE ArmCleanDataCache
|
BNE ArmCleanDataCache
|
||||||
MOV R0,#0
|
MOV R0,#0
|
||||||
MCR p15,0,R0,c7,c10,4\s\s ;Drain write buffer
|
MCR p15,0,R0,c7,c10,4 ;Drain write buffer
|
||||||
BX LR
|
BX LR
|
||||||
|
|
||||||
ArmInvalidateDataCache
|
ArmInvalidateDataCache
|
||||||
@ -126,7 +126,7 @@ ArmCleanInvalidateDataCache
|
|||||||
MRC p15,0,r15,c7,c14,3
|
MRC p15,0,r15,c7,c14,3
|
||||||
BNE ArmCleanInvalidateDataCache
|
BNE ArmCleanInvalidateDataCache
|
||||||
MOV R0,#0
|
MOV R0,#0
|
||||||
MCR p15,0,R0,c7,c10,4\s\s ;Drain write buffer
|
MCR p15,0,R0,c7,c10,4 ;Drain write buffer
|
||||||
BX LR
|
BX LR
|
||||||
|
|
||||||
ArmEnableBranchPrediction
|
ArmEnableBranchPrediction
|
||||||
|
@ -70,17 +70,17 @@ ArmDisableAsynchronousAbort
|
|||||||
ArmEnableIrq
|
ArmEnableIrq
|
||||||
cpsie i
|
cpsie i
|
||||||
isb
|
isb
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ArmDisableIrq
|
ArmDisableIrq
|
||||||
cpsid i
|
cpsid i
|
||||||
isb
|
isb
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ArmEnableFiq
|
ArmEnableFiq
|
||||||
cpsie f
|
cpsie f
|
||||||
isb
|
isb
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ArmDisableFiq
|
ArmDisableFiq
|
||||||
cpsid f
|
cpsid f
|
||||||
@ -99,17 +99,17 @@ ArmDisableInterrupts
|
|||||||
|
|
||||||
ArmGetInterruptState
|
ArmGetInterruptState
|
||||||
mrs R0,CPSR
|
mrs R0,CPSR
|
||||||
tst R0,#0x80\s\s ;Check if IRQ is enabled.
|
tst R0,#0x80 ;Check if IRQ is enabled.
|
||||||
moveq R0,#1
|
moveq R0,#1
|
||||||
movne R0,#0
|
movne R0,#0
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ArmGetFiqState
|
ArmGetFiqState
|
||||||
\s\smrs R0,CPSR
|
mrs R0,CPSR
|
||||||
\s\stst R0,#0x40\s\s ;Check if FIQ is enabled.
|
tst R0,#0x40 ;Check if FIQ is enabled.
|
||||||
\s\smoveq R0,#1
|
moveq R0,#1
|
||||||
\s\smovne R0,#0
|
movne R0,#0
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ArmInvalidateTlb
|
ArmInvalidateTlb
|
||||||
mov r0,#0
|
mov r0,#0
|
||||||
@ -126,7 +126,7 @@ ArmSetTTBR0
|
|||||||
|
|
||||||
ArmGetTTBR0BaseAddress
|
ArmGetTTBR0BaseAddress
|
||||||
mrc p15,0,r0,c2,c0,0
|
mrc p15,0,r0,c2,c0,0
|
||||||
ldr\s\s r1, = 0xFFFFC000
|
ldr r1, = 0xFFFFC000
|
||||||
and r0, r0, r1
|
and r0, r0, r1
|
||||||
isb
|
isb
|
||||||
bx lr
|
bx lr
|
||||||
|
@ -31,7 +31,7 @@ ASM_PFX(ArmGetScuBaseAddress):
|
|||||||
# the Configuration BAR as a stack is not necessary setup. The SCU is at the
|
# the Configuration BAR as a stack is not necessary setup. The SCU is at the
|
||||||
# offset 0x0000 from the Private Memory Region.
|
# offset 0x0000 from the Private Memory Region.
|
||||||
mrc p15, 4, r0, c15, c0, 0
|
mrc p15, 4, r0, c15, c0, 0
|
||||||
bx\s\slr
|
bx lr
|
||||||
|
|
||||||
# IN None
|
# IN None
|
||||||
# OUT r1 = SCU enabled (boolean)
|
# OUT r1 = SCU enabled (boolean)
|
||||||
|
@ -31,7 +31,7 @@ ArmGetScuBaseAddress
|
|||||||
// the Configuration BAR as a stack is not necessary setup. The SCU is at the
|
// the Configuration BAR as a stack is not necessary setup. The SCU is at the
|
||||||
// offset 0x0000 from the Private Memory Region.
|
// offset 0x0000 from the Private Memory Region.
|
||||||
mrc p15, 4, r0, c15, c0, 0
|
mrc p15, 4, r0, c15, c0, 0
|
||||||
bx\s\slr
|
bx lr
|
||||||
|
|
||||||
// IN None
|
// IN None
|
||||||
// OUT r1 = SCU enabled (boolean)
|
// OUT r1 = SCU enabled (boolean)
|
||||||
|
@ -80,21 +80,21 @@ ASM_PFX(ArmCleanInvalidateDataCacheEntryByMVA):
|
|||||||
|
|
||||||
|
|
||||||
ASM_PFX(ArmInvalidateDataCacheEntryBySetWay):
|
ASM_PFX(ArmInvalidateDataCacheEntryBySetWay):
|
||||||
mcr p15, 0, r0, c7, c6, 2 @ Invalidate this line\s\s\s\s
|
mcr p15, 0, r0, c7, c6, 2 @ Invalidate this line
|
||||||
dsb
|
dsb
|
||||||
isb
|
isb
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
|
||||||
ASM_PFX(ArmCleanInvalidateDataCacheEntryBySetWay):
|
ASM_PFX(ArmCleanInvalidateDataCacheEntryBySetWay):
|
||||||
mcr p15, 0, r0, c7, c14, 2 @ Clean and Invalidate this line\s\s\s\s
|
mcr p15, 0, r0, c7, c14, 2 @ Clean and Invalidate this line
|
||||||
dsb
|
dsb
|
||||||
isb
|
isb
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
|
||||||
ASM_PFX(ArmCleanDataCacheEntryBySetWay):
|
ASM_PFX(ArmCleanDataCacheEntryBySetWay):
|
||||||
mcr p15, 0, r0, c7, c10, 2 @ Clean this line\s\s\s\s
|
mcr p15, 0, r0, c7, c10, 2 @ Clean this line
|
||||||
dsb
|
dsb
|
||||||
isb
|
isb
|
||||||
bx lr
|
bx lr
|
||||||
@ -119,7 +119,7 @@ ASM_PFX(ArmDisableMmu):
|
|||||||
bic R0,R0,#1
|
bic R0,R0,#1
|
||||||
mcr p15,0,R0,c1,c0,0 @Disable MMU
|
mcr p15,0,R0,c1,c0,0 @Disable MMU
|
||||||
|
|
||||||
\s\smcr \s\s\s\sp15,0,R0,c8,c7,0 @Invalidate TLB
|
mcr p15,0,R0,c8,c7,0 @Invalidate TLB
|
||||||
mcr p15,0,R0,c7,c5,6 @Invalidate Branch predictor array
|
mcr p15,0,R0,c7,c5,6 @Invalidate Branch predictor array
|
||||||
dsb
|
dsb
|
||||||
isb
|
isb
|
||||||
@ -309,7 +309,7 @@ ASM_PFX(ArmCallWFI):
|
|||||||
|
|
||||||
//Note: Return 0 in Uniprocessor implementation
|
//Note: Return 0 in Uniprocessor implementation
|
||||||
ASM_PFX(ArmReadCbar):
|
ASM_PFX(ArmReadCbar):
|
||||||
mrc p15, 4, r0, c15, c0, 0\s\s//Read Configuration Base Address Register
|
mrc p15, 4, r0, c15, c0, 0 //Read Configuration Base Address Register
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ASM_PFX(ArmInvalidateInstructionAndDataTlb):
|
ASM_PFX(ArmInvalidateInstructionAndDataTlb):
|
||||||
@ -318,7 +318,7 @@ ASM_PFX(ArmInvalidateInstructionAndDataTlb):
|
|||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ASM_PFX(ArmReadMpidr):
|
ASM_PFX(ArmReadMpidr):
|
||||||
mrc p15, 0, r0, c0, c0, 5\s\s @ read MPIDR
|
mrc p15, 0, r0, c0, c0, 5 @ read MPIDR
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ASM_FUNCTION_REMOVE_IF_UNREFERENCED
|
ASM_FUNCTION_REMOVE_IF_UNREFERENCED
|
||||||
|
@ -82,21 +82,21 @@ ArmCleanInvalidateDataCacheEntryByMVA
|
|||||||
|
|
||||||
|
|
||||||
ArmInvalidateDataCacheEntryBySetWay
|
ArmInvalidateDataCacheEntryBySetWay
|
||||||
mcr p15, 0, r0, c7, c6, 2 ; Invalidate this line\s\s\s\s
|
mcr p15, 0, r0, c7, c6, 2 ; Invalidate this line
|
||||||
dsb
|
dsb
|
||||||
isb
|
isb
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
|
||||||
ArmCleanInvalidateDataCacheEntryBySetWay
|
ArmCleanInvalidateDataCacheEntryBySetWay
|
||||||
mcr p15, 0, r0, c7, c14, 2 ; Clean and Invalidate this line\s\s\s\s
|
mcr p15, 0, r0, c7, c14, 2 ; Clean and Invalidate this line
|
||||||
dsb
|
dsb
|
||||||
isb
|
isb
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
|
||||||
ArmCleanDataCacheEntryBySetWay
|
ArmCleanDataCacheEntryBySetWay
|
||||||
mcr p15, 0, r0, c7, c10, 2 ; Clean this line\s\s\s\s
|
mcr p15, 0, r0, c7, c10, 2 ; Clean this line
|
||||||
dsb
|
dsb
|
||||||
isb
|
isb
|
||||||
bx lr
|
bx lr
|
||||||
@ -125,7 +125,7 @@ ArmDisableMmu
|
|||||||
bic R0,R0,#1 ; Clear SCTLR.M bit : Disable MMU
|
bic R0,R0,#1 ; Clear SCTLR.M bit : Disable MMU
|
||||||
mcr p15,0,R0,c1,c0,0 ; Write R0 into SCTLR (Write control register configuration data)
|
mcr p15,0,R0,c1,c0,0 ; Write R0 into SCTLR (Write control register configuration data)
|
||||||
|
|
||||||
mcr \s\s p15,0,R0,c8,c7,0 ; TLBIALL : Invalidate unified TLB
|
mcr p15,0,R0,c8,c7,0 ; TLBIALL : Invalidate unified TLB
|
||||||
mcr p15,0,R0,c7,c5,6 ; BPIALL : Invalidate entire branch predictor array
|
mcr p15,0,R0,c7,c5,6 ; BPIALL : Invalidate entire branch predictor array
|
||||||
dsb
|
dsb
|
||||||
isb
|
isb
|
||||||
@ -307,7 +307,7 @@ ArmCallWFI
|
|||||||
|
|
||||||
//Note: Return 0 in Uniprocessor implementation
|
//Note: Return 0 in Uniprocessor implementation
|
||||||
ArmReadCbar
|
ArmReadCbar
|
||||||
mrc p15, 4, r0, c15, c0, 0\s\s//Read Configuration Base Address Register
|
mrc p15, 4, r0, c15, c0, 0 //Read Configuration Base Address Register
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmInvalidateInstructionAndDataTlb
|
ArmInvalidateInstructionAndDataTlb
|
||||||
@ -316,7 +316,7 @@ ArmInvalidateInstructionAndDataTlb
|
|||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadMpidr
|
ArmReadMpidr
|
||||||
mrc p15, 0, r0, c0, c0, 5\s\s\s\s; read MPIDR
|
mrc p15, 0, r0, c0, c0, 5 ; read MPIDR
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
END
|
END
|
||||||
|
@ -42,48 +42,48 @@ ASM_PFX(Cp15CacheInfo):
|
|||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ASM_PFX(ArmEnableInterrupts):
|
ASM_PFX(ArmEnableInterrupts):
|
||||||
\s\smrs R0,CPSR
|
mrs R0,CPSR
|
||||||
\s\sbic R0,R0,#0x80\s\s\s\s@Enable IRQ interrupts
|
bic R0,R0,#0x80 @Enable IRQ interrupts
|
||||||
\s\smsr CPSR_c,R0
|
msr CPSR_c,R0
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ASM_PFX(ArmDisableInterrupts):
|
ASM_PFX(ArmDisableInterrupts):
|
||||||
\s\smrs R0,CPSR
|
mrs R0,CPSR
|
||||||
\s\sorr R1,R0,#0x80\s\s\s\s@Disable IRQ interrupts
|
orr R1,R0,#0x80 @Disable IRQ interrupts
|
||||||
\s\smsr CPSR_c,R1
|
msr CPSR_c,R1
|
||||||
tst R0,#0x80
|
tst R0,#0x80
|
||||||
moveq R0,#1
|
moveq R0,#1
|
||||||
movne R0,#0
|
movne R0,#0
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ASM_PFX(ArmGetInterruptState):
|
ASM_PFX(ArmGetInterruptState):
|
||||||
\s\smrs R0,CPSR
|
mrs R0,CPSR
|
||||||
\s\stst R0,#0x80\s\s @Check if IRQ is enabled.
|
tst R0,#0x80 @Check if IRQ is enabled.
|
||||||
\s\smoveq R0,#1
|
moveq R0,#1
|
||||||
\s\smovne R0,#0
|
movne R0,#0
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ASM_PFX(ArmEnableFiq):
|
ASM_PFX(ArmEnableFiq):
|
||||||
\s\smrs R0,CPSR
|
mrs R0,CPSR
|
||||||
\s\sbic R0,R0,#0x40\s\s\s\s@Enable FIQ interrupts
|
bic R0,R0,#0x40 @Enable FIQ interrupts
|
||||||
\s\smsr CPSR_c,R0
|
msr CPSR_c,R0
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ASM_PFX(ArmDisableFiq):
|
ASM_PFX(ArmDisableFiq):
|
||||||
\s\smrs R0,CPSR
|
mrs R0,CPSR
|
||||||
\s\sorr R1,R0,#0x40\s\s\s\s@Disable FIQ interrupts
|
orr R1,R0,#0x40 @Disable FIQ interrupts
|
||||||
\s\smsr CPSR_c,R1
|
msr CPSR_c,R1
|
||||||
tst R0,#0x80
|
tst R0,#0x80
|
||||||
moveq R0,#1
|
moveq R0,#1
|
||||||
movne R0,#0
|
movne R0,#0
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ASM_PFX(ArmGetFiqState):
|
ASM_PFX(ArmGetFiqState):
|
||||||
\s\smrs R0,CPSR
|
mrs R0,CPSR
|
||||||
\s\stst R0,#0x80\s\s @Check if FIQ is enabled.
|
tst R0,#0x80 @Check if FIQ is enabled.
|
||||||
\s\smoveq R0,#1
|
moveq R0,#1
|
||||||
\s\smovne R0,#0
|
movne R0,#0
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ASM_PFX(ArmInvalidateTlb):
|
ASM_PFX(ArmInvalidateTlb):
|
||||||
mov r0,#0
|
mov r0,#0
|
||||||
|
@ -48,48 +48,48 @@ ArmIsMPCore
|
|||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmEnableInterrupts
|
ArmEnableInterrupts
|
||||||
\s\smrs R0,CPSR
|
mrs R0,CPSR
|
||||||
\s\sbic R0,R0,#0x80\s\s\s\s;Enable IRQ interrupts
|
bic R0,R0,#0x80 ;Enable IRQ interrupts
|
||||||
\s\smsr CPSR_c,R0
|
msr CPSR_c,R0
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ArmDisableInterrupts
|
ArmDisableInterrupts
|
||||||
\s\smrs R0,CPSR
|
mrs R0,CPSR
|
||||||
\s\sorr R1,R0,#0x80\s\s\s\s;Disable IRQ interrupts
|
orr R1,R0,#0x80 ;Disable IRQ interrupts
|
||||||
\s\smsr CPSR_c,R1
|
msr CPSR_c,R1
|
||||||
tst R0,#0x80
|
tst R0,#0x80
|
||||||
moveq R0,#1
|
moveq R0,#1
|
||||||
movne R0,#0
|
movne R0,#0
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ArmGetInterruptState
|
ArmGetInterruptState
|
||||||
\s\smrs R0,CPSR
|
mrs R0,CPSR
|
||||||
\s\stst R0,#0x80\s\s ;Check if IRQ is enabled.
|
tst R0,#0x80 ;Check if IRQ is enabled.
|
||||||
\s\smoveq R0,#1
|
moveq R0,#1
|
||||||
\s\smovne R0,#0
|
movne R0,#0
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ArmEnableFiq
|
ArmEnableFiq
|
||||||
\s\smrs R0,CPSR
|
mrs R0,CPSR
|
||||||
\s\sbic R0,R0,#0x40\s\s\s\s;Enable IRQ interrupts
|
bic R0,R0,#0x40 ;Enable IRQ interrupts
|
||||||
\s\smsr CPSR_c,R0
|
msr CPSR_c,R0
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ArmDisableFiq
|
ArmDisableFiq
|
||||||
\s\smrs R0,CPSR
|
mrs R0,CPSR
|
||||||
\s\sorr R1,R0,#0x40\s\s\s\s;Disable IRQ interrupts
|
orr R1,R0,#0x40 ;Disable IRQ interrupts
|
||||||
\s\smsr CPSR_c,R1
|
msr CPSR_c,R1
|
||||||
tst R0,#0x40
|
tst R0,#0x40
|
||||||
moveq R0,#1
|
moveq R0,#1
|
||||||
movne R0,#0
|
movne R0,#0
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ArmGetFiqState
|
ArmGetFiqState
|
||||||
\s\smrs R0,CPSR
|
mrs R0,CPSR
|
||||||
\s\stst R0,#0x40\s\s ;Check if IRQ is enabled.
|
tst R0,#0x40 ;Check if IRQ is enabled.
|
||||||
\s\smoveq R0,#1
|
moveq R0,#1
|
||||||
\s\smovne R0,#0
|
movne R0,#0
|
||||||
\s\sbx LR
|
bx LR
|
||||||
|
|
||||||
ArmInvalidateTlb
|
ArmInvalidateTlb
|
||||||
mov r0,#0
|
mov r0,#0
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
#include <Library/IoLib.h>
|
#include <Library/IoLib.h>
|
||||||
|
|
||||||
VOID ArmClearMPCoreMailbox() {
|
VOID ArmClearMPCoreMailbox() {
|
||||||
\s\sMmioWrite32(PcdGet32(PcdMPCoreMailboxClearAddress),PcdGet32(PcdMPCoreMailboxClearValue));
|
MmioWrite32(PcdGet32(PcdMPCoreMailboxClearAddress),PcdGet32(PcdMPCoreMailboxClearValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
UINTN ArmGetMPCoreMailbox() {
|
UINTN ArmGetMPCoreMailbox() {
|
||||||
|
@ -72,8 +72,8 @@ EFI_STATUS TZASCSetRegion(UINTN TzascBase, UINTN RegionId, UINTN Enabled, UINTN
|
|||||||
Region = (UINT32*)((UINTN)TzascBase + TZASC_REGIONS_REG + (RegionId * 0x10));
|
Region = (UINT32*)((UINTN)TzascBase + TZASC_REGIONS_REG + (RegionId * 0x10));
|
||||||
|
|
||||||
MmioWrite32((UINTN)(Region), LowAddress&0xFFFF8000);
|
MmioWrite32((UINTN)(Region), LowAddress&0xFFFF8000);
|
||||||
\s\sMmioWrite32((UINTN)(Region+1), HighAddress);
|
MmioWrite32((UINTN)(Region+1), HighAddress);
|
||||||
\s\sMmioWrite32((UINTN)(Region+2), ((Security & 0xF) <<28) | ((Size & 0x3F) << 1) | (Enabled & 0x1));
|
MmioWrite32((UINTN)(Region+2), ((Security & 0xF) <<28) | ((Size & 0x3F) << 1) | (Enabled & 0x1));
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -42,71 +42,71 @@ InternalMemCopyMem (
|
|||||||
GCC_ASM_EXPORT(InternalMemCopyMem)
|
GCC_ASM_EXPORT(InternalMemCopyMem)
|
||||||
|
|
||||||
ASM_PFX(InternalMemCopyMem):
|
ASM_PFX(InternalMemCopyMem):
|
||||||
\s\sstmfd\s\ssp!, {r4-r11, lr}
|
stmfd sp!, {r4-r11, lr}
|
||||||
\s\stst\s\sr0, #3
|
tst r0, #3
|
||||||
\s\smov\s\sr11, r0
|
mov r11, r0
|
||||||
\s\smov\s\sr10, r0
|
mov r10, r0
|
||||||
\s\smov\s\sip, r2
|
mov ip, r2
|
||||||
\s\smov\s\slr, r1
|
mov lr, r1
|
||||||
\s\smovne\s\sr0, #0
|
movne r0, #0
|
||||||
\s\sbne\s\sL4
|
bne L4
|
||||||
\s\stst\s\sr1, #3
|
tst r1, #3
|
||||||
\s\smovne\s\sr3, #0
|
movne r3, #0
|
||||||
\s\smoveq\s\sr3, #1
|
moveq r3, #1
|
||||||
\s\scmp\s\sr2, #31
|
cmp r2, #31
|
||||||
\s\smovls\s\sr0, #0
|
movls r0, #0
|
||||||
\s\sandhi\s\sr0, r3, #1
|
andhi r0, r3, #1
|
||||||
L4:
|
L4:
|
||||||
\s\scmp\s\sr11, r1
|
cmp r11, r1
|
||||||
\s\sbcc\s\sL26
|
bcc L26
|
||||||
\s\sbls\s\sL7
|
bls L7
|
||||||
\s\srsb\s\sr3, r1, r11
|
rsb r3, r1, r11
|
||||||
\s\scmp\s\sip, r3
|
cmp ip, r3
|
||||||
\s\sbcc\s\sL26
|
bcc L26
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\sbeq\s\sL7
|
beq L7
|
||||||
\s\sadd\s\sr10, r11, ip
|
add r10, r11, ip
|
||||||
\s\sadd\s\slr, ip, r1
|
add lr, ip, r1
|
||||||
\s\sb\s\sL16
|
b L16
|
||||||
L29:
|
L29:
|
||||||
\s\ssub\s\sip, ip, #8
|
sub ip, ip, #8
|
||||||
\s\scmp\s\sip, #7
|
cmp ip, #7
|
||||||
\s\sldrd\s\sr2, [lr, #-8]!
|
ldrd r2, [lr, #-8]!
|
||||||
\s\smovls\s\sr0, #0
|
movls r0, #0
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\sstrd\s\sr2, [r10, #-8]!
|
strd r2, [r10, #-8]!
|
||||||
\s\sbeq\s\sL7
|
beq L7
|
||||||
L16:
|
L16:
|
||||||
\s\scmp\s\sr0, #0
|
cmp r0, #0
|
||||||
\s\sbne\s\sL29
|
bne L29
|
||||||
\s\ssub\s\sr3, lr, #1
|
sub r3, lr, #1
|
||||||
\s\ssub\s\sip, ip, #1
|
sub ip, ip, #1
|
||||||
\s\sldrb\s\sr3, [r3, #0]\s\s
|
ldrb r3, [r3, #0]
|
||||||
\s\ssub\s\sr2, r10, #1
|
sub r2, r10, #1
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\ssub\s\sr10, r10, #1
|
sub r10, r10, #1
|
||||||
\s\ssub\s\slr, lr, #1
|
sub lr, lr, #1
|
||||||
\s\sstrb\s\sr3, [r2, #0]
|
strb r3, [r2, #0]
|
||||||
\s\sbne\s\sL16
|
bne L16
|
||||||
\s\sb L7
|
b L7
|
||||||
L11:
|
L11:
|
||||||
\s\sldrb\s\sr3, [lr], #1\s\s
|
ldrb r3, [lr], #1
|
||||||
\s\ssub\s\sip, ip, #1
|
sub ip, ip, #1
|
||||||
\s\sstrb\s\sr3, [r10], #1
|
strb r3, [r10], #1
|
||||||
L26:
|
L26:
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\sbeq\s\sL7
|
beq L7
|
||||||
L30:
|
L30:
|
||||||
\s\scmp\s\sr0, #0
|
cmp r0, #0
|
||||||
\s\sbeq\s\sL11
|
beq L11
|
||||||
\s\ssub\s\sip, ip, #32
|
sub ip, ip, #32
|
||||||
\s\scmp\s\sip, #31
|
cmp ip, #31
|
||||||
\s\sldmia\s\slr!, {r2-r9}
|
ldmia lr!, {r2-r9}
|
||||||
\s\smovls\s\sr0, #0
|
movls r0, #0
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\sstmia\s\sr10!, {r2-r9}
|
stmia r10!, {r2-r9}
|
||||||
\s\sbne\s\sL30
|
bne L30
|
||||||
L7:
|
L7:
|
||||||
mov\s\sr0, r11
|
mov r0, r11
|
||||||
\s\sldmfd\s\ssp!, {r4-r11, pc}
|
ldmfd sp!, {r4-r11, pc}
|
||||||
|
|
||||||
|
@ -37,78 +37,78 @@ InternalMemCopyMem (
|
|||||||
IN UINTN Length
|
IN UINTN Length
|
||||||
)
|
)
|
||||||
**/
|
**/
|
||||||
\s\sEXPORT InternalMemCopyMem
|
EXPORT InternalMemCopyMem
|
||||||
|
|
||||||
\s\sAREA AsmMemStuff, CODE, READONLY
|
AREA AsmMemStuff, CODE, READONLY
|
||||||
|
|
||||||
InternalMemCopyMem
|
InternalMemCopyMem
|
||||||
\s\sstmfd\s\ssp!, {r4-r11, lr}
|
stmfd sp!, {r4-r11, lr}
|
||||||
\s\stst\s\sr0, #3
|
tst r0, #3
|
||||||
\s\smov\s\sr11, r0
|
mov r11, r0
|
||||||
\s\smov\s\sr10, r0
|
mov r10, r0
|
||||||
\s\smov\s\sip, r2
|
mov ip, r2
|
||||||
\s\smov\s\slr, r1
|
mov lr, r1
|
||||||
\s\smovne\s\sr0, #0
|
movne r0, #0
|
||||||
\s\sbne\s\sL4
|
bne L4
|
||||||
\s\stst\s\sr1, #3
|
tst r1, #3
|
||||||
\s\smovne\s\sr3, #0
|
movne r3, #0
|
||||||
\s\smoveq\s\sr3, #1
|
moveq r3, #1
|
||||||
\s\scmp\s\sr2, #31
|
cmp r2, #31
|
||||||
\s\smovls\s\sr0, #0
|
movls r0, #0
|
||||||
\s\sandhi\s\sr0, r3, #1
|
andhi r0, r3, #1
|
||||||
L4
|
L4
|
||||||
\s\scmp\s\sr11, r1
|
cmp r11, r1
|
||||||
\s\sbcc\s\sL26
|
bcc L26
|
||||||
\s\sbls\s\sL7
|
bls L7
|
||||||
\s\srsb\s\sr3, r1, r11
|
rsb r3, r1, r11
|
||||||
\s\scmp\s\sip, r3
|
cmp ip, r3
|
||||||
\s\sbcc\s\sL26
|
bcc L26
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\sbeq\s\sL7
|
beq L7
|
||||||
\s\sadd\s\sr10, r11, ip
|
add r10, r11, ip
|
||||||
\s\sadd\s\slr, ip, r1
|
add lr, ip, r1
|
||||||
\s\sb\s\sL16
|
b L16
|
||||||
L29
|
L29
|
||||||
\s\ssub\s\sip, ip, #8
|
sub ip, ip, #8
|
||||||
\s\scmp\s\sip, #7
|
cmp ip, #7
|
||||||
\s\sldrd\s\sr2, [lr, #-8]!
|
ldrd r2, [lr, #-8]!
|
||||||
\s\smovls\s\sr0, #0
|
movls r0, #0
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\sstrd\s\sr2, [r10, #-8]!
|
strd r2, [r10, #-8]!
|
||||||
\s\sbeq\s\sL7
|
beq L7
|
||||||
L16
|
L16
|
||||||
\s\scmp\s\sr0, #0
|
cmp r0, #0
|
||||||
\s\sbne\s\sL29
|
bne L29
|
||||||
\s\ssub\s\sr3, lr, #1
|
sub r3, lr, #1
|
||||||
\s\ssub\s\sip, ip, #1
|
sub ip, ip, #1
|
||||||
\s\sldrb\s\sr3, [r3, #0]\s\s
|
ldrb r3, [r3, #0]
|
||||||
\s\ssub\s\sr2, r10, #1
|
sub r2, r10, #1
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\ssub\s\sr10, r10, #1
|
sub r10, r10, #1
|
||||||
\s\ssub\s\slr, lr, #1
|
sub lr, lr, #1
|
||||||
\s\sstrb\s\sr3, [r2, #0]
|
strb r3, [r2, #0]
|
||||||
\s\sbne\s\sL16
|
bne L16
|
||||||
\s\sb L7
|
b L7
|
||||||
L11
|
L11
|
||||||
\s\sldrb\s\sr3, [lr], #1\s\s
|
ldrb r3, [lr], #1
|
||||||
\s\ssub\s\sip, ip, #1
|
sub ip, ip, #1
|
||||||
\s\sstrb\s\sr3, [r10], #1
|
strb r3, [r10], #1
|
||||||
L26
|
L26
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\sbeq\s\sL7
|
beq L7
|
||||||
L30
|
L30
|
||||||
\s\scmp\s\sr0, #0
|
cmp r0, #0
|
||||||
\s\sbeq\s\sL11
|
beq L11
|
||||||
\s\ssub\s\sip, ip, #32
|
sub ip, ip, #32
|
||||||
\s\scmp\s\sip, #31
|
cmp ip, #31
|
||||||
\s\sldmia\s\slr!, {r2-r9}
|
ldmia lr!, {r2-r9}
|
||||||
\s\smovls\s\sr0, #0
|
movls r0, #0
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\sstmia\s\sr10!, {r2-r9}
|
stmia r10!, {r2-r9}
|
||||||
\s\sbne\s\sL30
|
bne L30
|
||||||
L7
|
L7
|
||||||
mov\s\sr0, r11
|
mov r0, r11
|
||||||
\s\sldmfd\s\ssp!, {r4-r11, pc}
|
ldmfd sp!, {r4-r11, pc}
|
||||||
\s\s
|
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -34,49 +34,49 @@ InternalMemSetMem (
|
|||||||
IN UINT8 Value
|
IN UINT8 Value
|
||||||
)
|
)
|
||||||
**/
|
**/
|
||||||
\s\s
|
|
||||||
.text
|
.text
|
||||||
.align 2
|
.align 2
|
||||||
GCC_ASM_EXPORT(InternalMemSetMem)
|
GCC_ASM_EXPORT(InternalMemSetMem)
|
||||||
|
|
||||||
ASM_PFX(InternalMemSetMem):
|
ASM_PFX(InternalMemSetMem):
|
||||||
\s\sstmfd\s\ssp!, {r4-r11, lr}
|
stmfd sp!, {r4-r11, lr}
|
||||||
\s\stst\s\s r0, #3
|
tst r0, #3
|
||||||
\s\smovne\s\sr3, #0
|
movne r3, #0
|
||||||
\s\smoveq\s\sr3, #1
|
moveq r3, #1
|
||||||
\s\scmp\s\s r1, #31
|
cmp r1, #31
|
||||||
\s\smovls lr, #0
|
movls lr, #0
|
||||||
\s\sandhi\s\slr, r3, #1
|
andhi lr, r3, #1
|
||||||
\s\scmp\s\s lr, #0
|
cmp lr, #0
|
||||||
\s\smov\s\s r12, r0
|
mov r12, r0
|
||||||
\s\sbne\s\s L31
|
bne L31
|
||||||
L32:
|
L32:
|
||||||
\s\smov\s\s r3, #0
|
mov r3, #0
|
||||||
\s\sb\s\s L43
|
b L43
|
||||||
L31:
|
L31:
|
||||||
and r4, r2, #0xff
|
and r4, r2, #0xff
|
||||||
orr r4, r4, r4, LSL #8
|
orr r4, r4, r4, LSL #8
|
||||||
orr r4, r4, r4, LSL #16
|
orr r4, r4, r4, LSL #16
|
||||||
\s\smov r5, r4
|
mov r5, r4
|
||||||
\s\smov r5, r4
|
mov r5, r4
|
||||||
\s\smov r6, r4
|
mov r6, r4
|
||||||
\s\smov r7, r4
|
mov r7, r4
|
||||||
\s\smov r8, r4
|
mov r8, r4
|
||||||
\s\smov r9, r4
|
mov r9, r4
|
||||||
\s\smov r10, r4
|
mov r10, r4
|
||||||
\s\smov r11, r4
|
mov r11, r4
|
||||||
\s\sb\s\s L32
|
b L32
|
||||||
L34:
|
L34:
|
||||||
\s\scmp\s\s lr, #0
|
cmp lr, #0
|
||||||
\s\sstreqb\s\sr2, [r12], #1
|
streqb r2, [r12], #1
|
||||||
\s\ssubeq\s\s r1, r1, #1
|
subeq r1, r1, #1
|
||||||
\s\sbeq\s\s L43
|
beq L43
|
||||||
\s\ssub\s\s r1, r1, #32
|
sub r1, r1, #32
|
||||||
\s\scmp\s\s r1, #31
|
cmp r1, #31
|
||||||
\s\smovls\s\s lr, r3
|
movls lr, r3
|
||||||
\s\sstmia\s\s r12!, {r4-r11}
|
stmia r12!, {r4-r11}
|
||||||
L43:
|
L43:
|
||||||
\s\scmp\s\s r1, #0
|
cmp r1, #0
|
||||||
\s\sbne\s\s L34
|
bne L34
|
||||||
\s\sldmfd\s\s sp!, {r4-r11, pc}
|
ldmfd sp!, {r4-r11, pc}
|
||||||
\s\s
|
|
@ -33,51 +33,51 @@ InternalMemSetMem (
|
|||||||
IN UINT8 Value
|
IN UINT8 Value
|
||||||
)
|
)
|
||||||
**/
|
**/
|
||||||
\s\s
|
|
||||||
\s\sEXPORT InternalMemSetMem
|
EXPORT InternalMemSetMem
|
||||||
\s\s
|
|
||||||
\s\sAREA AsmMemStuff, CODE, READONLY
|
AREA AsmMemStuff, CODE, READONLY
|
||||||
|
|
||||||
InternalMemSetMem
|
InternalMemSetMem
|
||||||
\s\sstmfd\s\ssp!, {r4-r11, lr}
|
stmfd sp!, {r4-r11, lr}
|
||||||
\s\stst\s\s r0, #3
|
tst r0, #3
|
||||||
\s\smovne\s\sr3, #0
|
movne r3, #0
|
||||||
\s\smoveq\s\sr3, #1
|
moveq r3, #1
|
||||||
\s\scmp\s\s r1, #31
|
cmp r1, #31
|
||||||
\s\smovls lr, #0
|
movls lr, #0
|
||||||
\s\sandhi\s\slr, r3, #1
|
andhi lr, r3, #1
|
||||||
\s\scmp\s\s lr, #0
|
cmp lr, #0
|
||||||
\s\smov\s\s r12, r0
|
mov r12, r0
|
||||||
\s\sbne\s\s L31
|
bne L31
|
||||||
L32
|
L32
|
||||||
\s\smov\s\s r3, #0
|
mov r3, #0
|
||||||
\s\sb\s\s L43
|
b L43
|
||||||
L31
|
L31
|
||||||
and r4, r2, #0xff
|
and r4, r2, #0xff
|
||||||
orr r4, r4, r4, LSL #8
|
orr r4, r4, r4, LSL #8
|
||||||
orr r4, r4, r4, LSL #16
|
orr r4, r4, r4, LSL #16
|
||||||
\s\smov r5, r4
|
mov r5, r4
|
||||||
\s\smov r5, r4
|
mov r5, r4
|
||||||
\s\smov r6, r4
|
mov r6, r4
|
||||||
\s\smov r7, r4
|
mov r7, r4
|
||||||
\s\smov r8, r4
|
mov r8, r4
|
||||||
\s\smov r9, r4
|
mov r9, r4
|
||||||
\s\smov r10, r4
|
mov r10, r4
|
||||||
\s\smov r11, r4
|
mov r11, r4
|
||||||
\s\sb\s\s L32
|
b L32
|
||||||
L34
|
L34
|
||||||
\s\scmp\s\s lr, #0
|
cmp lr, #0
|
||||||
\s\sstreqb\s\sr2, [r12], #1
|
streqb r2, [r12], #1
|
||||||
\s\ssubeq\s\s r1, r1, #1
|
subeq r1, r1, #1
|
||||||
\s\sbeq\s\s L43
|
beq L43
|
||||||
\s\ssub\s\s r1, r1, #32
|
sub r1, r1, #32
|
||||||
\s\scmp\s\s r1, #31
|
cmp r1, #31
|
||||||
\s\smovls\s\s lr, r3
|
movls lr, r3
|
||||||
\s\sstmia\s\s r12!, {r4-r11}
|
stmia r12!, {r4-r11}
|
||||||
L43
|
L43
|
||||||
\s\scmp\s\s r1, #0
|
cmp r1, #0
|
||||||
\s\sbne\s\s L34
|
bne L34
|
||||||
\s\sldmfd\s\s sp!, {r4-r11, pc}
|
ldmfd sp!, {r4-r11, pc}
|
||||||
\s\s
|
|
||||||
END
|
END
|
||||||
|
|
@ -42,73 +42,73 @@ InternalMemCopyMem (
|
|||||||
GCC_ASM_EXPORT(InternalMemCopyMem)
|
GCC_ASM_EXPORT(InternalMemCopyMem)
|
||||||
|
|
||||||
ASM_PFX(InternalMemCopyMem):
|
ASM_PFX(InternalMemCopyMem):
|
||||||
\s\sstmfd\s\ssp!, {r4, r9, lr}
|
stmfd sp!, {r4, r9, lr}
|
||||||
\s\stst\s\sr0, #3
|
tst r0, #3
|
||||||
\s\smov\s\sr4, r0
|
mov r4, r0
|
||||||
\s\smov\s\sr9, r0
|
mov r9, r0
|
||||||
\s\smov\s\sip, r2
|
mov ip, r2
|
||||||
\s\smov\s\slr, r1
|
mov lr, r1
|
||||||
\s\smovne\s\sr0, #0
|
movne r0, #0
|
||||||
\s\sbne\s\sL4
|
bne L4
|
||||||
\s\stst\s\sr1, #3
|
tst r1, #3
|
||||||
\s\smovne\s\sr3, #0
|
movne r3, #0
|
||||||
\s\smoveq\s\sr3, #1
|
moveq r3, #1
|
||||||
\s\scmp\s\sr2, #127
|
cmp r2, #127
|
||||||
\s\smovls\s\sr0, #0
|
movls r0, #0
|
||||||
\s\sandhi\s\sr0, r3, #1
|
andhi r0, r3, #1
|
||||||
L4:
|
L4:
|
||||||
\s\scmp\s\sr4, r1
|
cmp r4, r1
|
||||||
\s\sbcc\s\sL26
|
bcc L26
|
||||||
\s\sbls\s\sL7
|
bls L7
|
||||||
\s\srsb\s\sr3, r1, r4
|
rsb r3, r1, r4
|
||||||
\s\scmp\s\sip, r3
|
cmp ip, r3
|
||||||
\s\sbcc\s\sL26
|
bcc L26
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\sbeq\s\sL7
|
beq L7
|
||||||
\s\sadd\s\sr9, r4, ip
|
add r9, r4, ip
|
||||||
\s\sadd\s\slr, ip, r1
|
add lr, ip, r1
|
||||||
\s\sb\s\sL16
|
b L16
|
||||||
L29:
|
L29:
|
||||||
\s\ssub\s\sip, ip, #8
|
sub ip, ip, #8
|
||||||
\s\scmp\s\sip, #7
|
cmp ip, #7
|
||||||
\s\sldrd\s\sr2, [lr, #-8]!
|
ldrd r2, [lr, #-8]!
|
||||||
\s\smovls\s\sr0, #0
|
movls r0, #0
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\sstrd\s\sr2, [r9, #-8]!
|
strd r2, [r9, #-8]!
|
||||||
\s\sbeq\s\sL7
|
beq L7
|
||||||
L16:
|
L16:
|
||||||
\s\scmp\s\sr0, #0
|
cmp r0, #0
|
||||||
\s\sbne\s\sL29
|
bne L29
|
||||||
\s\ssub\s\sr3, lr, #1
|
sub r3, lr, #1
|
||||||
\s\ssub\s\sip, ip, #1
|
sub ip, ip, #1
|
||||||
\s\sldrb\s\sr3, [r3, #0]\s\s
|
ldrb r3, [r3, #0]
|
||||||
\s\ssub\s\sr2, r9, #1
|
sub r2, r9, #1
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\ssub\s\sr9, r9, #1
|
sub r9, r9, #1
|
||||||
\s\ssub\s\slr, lr, #1
|
sub lr, lr, #1
|
||||||
\s\sstrb\s\sr3, [r2, #0]
|
strb r3, [r2, #0]
|
||||||
\s\sbne\s\sL16
|
bne L16
|
||||||
\s\sb L7
|
b L7
|
||||||
L11:
|
L11:
|
||||||
\s\sldrb\s\sr3, [lr], #1\s\s
|
ldrb r3, [lr], #1
|
||||||
\s\ssub\s\sip, ip, #1
|
sub ip, ip, #1
|
||||||
\s\sstrb\s\sr3, [r9], #1
|
strb r3, [r9], #1
|
||||||
L26:
|
L26:
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\sbeq\s\sL7
|
beq L7
|
||||||
L30:
|
L30:
|
||||||
\s\scmp\s\sr0, #0
|
cmp r0, #0
|
||||||
\s\sbeq\s\sL11
|
beq L11
|
||||||
\s\ssub\s\sip, ip, #128 // 32
|
sub ip, ip, #128 // 32
|
||||||
\s\scmp\s\sip, #127 // 31
|
cmp ip, #127 // 31
|
||||||
\s\svldm lr!, {d0-d15}
|
vldm lr!, {d0-d15}
|
||||||
\s\smovls\s\sr0, #0
|
movls r0, #0
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\svstm r9!, {d0-d15}
|
vstm r9!, {d0-d15}
|
||||||
\s\sbne\s\sL30
|
bne L30
|
||||||
L7:
|
L7:
|
||||||
dsb
|
dsb
|
||||||
mov\s\sr0, r4
|
mov r0, r4
|
||||||
\s\sldmfd\s\ssp!, {r4, r9, pc}
|
ldmfd sp!, {r4, r9, pc}
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,79 +37,79 @@ InternalMemCopyMem (
|
|||||||
IN UINTN Length
|
IN UINTN Length
|
||||||
)
|
)
|
||||||
**/
|
**/
|
||||||
\s\sEXPORT InternalMemCopyMem
|
EXPORT InternalMemCopyMem
|
||||||
|
|
||||||
\s\sAREA AsmMemStuff, CODE, READONLY
|
AREA AsmMemStuff, CODE, READONLY
|
||||||
|
|
||||||
InternalMemCopyMem
|
InternalMemCopyMem
|
||||||
\s\sstmfd\s\ssp!, {r4, r9, lr}
|
stmfd sp!, {r4, r9, lr}
|
||||||
\s\stst\s\sr0, #3
|
tst r0, #3
|
||||||
\s\smov\s\sr4, r0
|
mov r4, r0
|
||||||
\s\smov\s\sr9, r0
|
mov r9, r0
|
||||||
\s\smov\s\sip, r2
|
mov ip, r2
|
||||||
\s\smov\s\slr, r1
|
mov lr, r1
|
||||||
\s\smovne\s\sr0, #0
|
movne r0, #0
|
||||||
\s\sbne\s\sL4
|
bne L4
|
||||||
\s\stst\s\sr1, #3
|
tst r1, #3
|
||||||
\s\smovne\s\sr3, #0
|
movne r3, #0
|
||||||
\s\smoveq\s\sr3, #1
|
moveq r3, #1
|
||||||
\s\scmp\s\sr2, #127
|
cmp r2, #127
|
||||||
\s\smovls\s\sr0, #0
|
movls r0, #0
|
||||||
\s\sandhi\s\sr0, r3, #1
|
andhi r0, r3, #1
|
||||||
L4
|
L4
|
||||||
\s\scmp\s\sr4, r1
|
cmp r4, r1
|
||||||
\s\sbcc\s\sL26
|
bcc L26
|
||||||
\s\sbls\s\sL7
|
bls L7
|
||||||
\s\srsb\s\sr3, r1, r4
|
rsb r3, r1, r4
|
||||||
\s\scmp\s\sip, r3
|
cmp ip, r3
|
||||||
\s\sbcc\s\sL26
|
bcc L26
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\sbeq\s\sL7
|
beq L7
|
||||||
\s\sadd\s\sr9, r4, ip
|
add r9, r4, ip
|
||||||
\s\sadd\s\slr, ip, r1
|
add lr, ip, r1
|
||||||
\s\sb\s\sL16
|
b L16
|
||||||
L29
|
L29
|
||||||
\s\ssub\s\sip, ip, #8
|
sub ip, ip, #8
|
||||||
\s\scmp\s\sip, #7
|
cmp ip, #7
|
||||||
\s\sldrd\s\sr2, [lr, #-8]!
|
ldrd r2, [lr, #-8]!
|
||||||
\s\smovls\s\sr0, #0
|
movls r0, #0
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\sstrd\s\sr2, [r9, #-8]!
|
strd r2, [r9, #-8]!
|
||||||
\s\sbeq\s\sL7
|
beq L7
|
||||||
L16
|
L16
|
||||||
\s\scmp\s\sr0, #0
|
cmp r0, #0
|
||||||
\s\sbne\s\sL29
|
bne L29
|
||||||
\s\ssub\s\sr3, lr, #1
|
sub r3, lr, #1
|
||||||
\s\ssub\s\sip, ip, #1
|
sub ip, ip, #1
|
||||||
\s\sldrb\s\sr3, [r3, #0]\s\s
|
ldrb r3, [r3, #0]
|
||||||
\s\ssub\s\sr2, r9, #1
|
sub r2, r9, #1
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\ssub\s\sr9, r9, #1
|
sub r9, r9, #1
|
||||||
\s\ssub\s\slr, lr, #1
|
sub lr, lr, #1
|
||||||
\s\sstrb\s\sr3, [r2, #0]
|
strb r3, [r2, #0]
|
||||||
\s\sbne\s\sL16
|
bne L16
|
||||||
\s\sb L7
|
b L7
|
||||||
L11
|
L11
|
||||||
\s\sldrb\s\sr3, [lr], #1\s\s
|
ldrb r3, [lr], #1
|
||||||
\s\ssub\s\sip, ip, #1
|
sub ip, ip, #1
|
||||||
\s\sstrb\s\sr3, [r9], #1
|
strb r3, [r9], #1
|
||||||
L26
|
L26
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\sbeq\s\sL7
|
beq L7
|
||||||
L30
|
L30
|
||||||
\s\scmp\s\sr0, #0
|
cmp r0, #0
|
||||||
\s\sbeq\s\sL11
|
beq L11
|
||||||
\s\ssub\s\sip, ip, #128 // 32
|
sub ip, ip, #128 // 32
|
||||||
\s\scmp\s\sip, #127 // 31
|
cmp ip, #127 // 31
|
||||||
\s\svldm lr!, {d0-d15}
|
vldm lr!, {d0-d15}
|
||||||
\s\smovls\s\sr0, #0
|
movls r0, #0
|
||||||
\s\scmp\s\sip, #0
|
cmp ip, #0
|
||||||
\s\svstm r9!, {d0-d15}
|
vstm r9!, {d0-d15}
|
||||||
\s\sbne\s\sL30
|
bne L30
|
||||||
L7
|
L7
|
||||||
dsb
|
dsb
|
||||||
mov\s\sr0, r4
|
mov r0, r4
|
||||||
\s\sldmfd\s\ssp!, {r4, r9, pc}
|
ldmfd sp!, {r4, r9, pc}
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -34,25 +34,25 @@ InternalMemSetMem (
|
|||||||
IN UINT8 Value
|
IN UINT8 Value
|
||||||
)
|
)
|
||||||
**/
|
**/
|
||||||
\s\s
|
|
||||||
.text
|
.text
|
||||||
.align 2
|
.align 2
|
||||||
GCC_ASM_EXPORT(InternalMemSetMem)
|
GCC_ASM_EXPORT(InternalMemSetMem)
|
||||||
|
|
||||||
ASM_PFX(InternalMemSetMem):
|
ASM_PFX(InternalMemSetMem):
|
||||||
\s\sstmfd\s\ssp!, {r4-r7, lr}
|
stmfd sp!, {r4-r7, lr}
|
||||||
\s\stst\s\s r0, #3
|
tst r0, #3
|
||||||
\s\smovne\s\sr3, #0
|
movne r3, #0
|
||||||
\s\smoveq\s\sr3, #1
|
moveq r3, #1
|
||||||
\s\scmp\s\s r1, #127
|
cmp r1, #127
|
||||||
\s\smovls lr, #0
|
movls lr, #0
|
||||||
\s\sandhi\s\slr, r3, #1
|
andhi lr, r3, #1
|
||||||
\s\scmp\s\s lr, #0
|
cmp lr, #0
|
||||||
\s\smov\s\s r12, r0
|
mov r12, r0
|
||||||
\s\sbne\s\s L31
|
bne L31
|
||||||
L32:
|
L32:
|
||||||
\s\smov\s\s r3, #0
|
mov r3, #0
|
||||||
\s\sb\s\s L43
|
b L43
|
||||||
L31:
|
L31:
|
||||||
vdup.8 q0,r2
|
vdup.8 q0,r2
|
||||||
vmov q1,q0
|
vmov q1,q0
|
||||||
@ -62,19 +62,19 @@ L31:
|
|||||||
vmov q5,q0
|
vmov q5,q0
|
||||||
vmov q6,q0
|
vmov q6,q0
|
||||||
vmov q7,q0
|
vmov q7,q0
|
||||||
\s\sb\s\s L32
|
b L32
|
||||||
L34:
|
L34:
|
||||||
\s\scmp\s\s lr, #0
|
cmp lr, #0
|
||||||
\s\sstreqb\s\sr2, [r12], #1
|
streqb r2, [r12], #1
|
||||||
\s\ssubeq\s\s r1, r1, #1
|
subeq r1, r1, #1
|
||||||
\s\sbeq\s\s L43
|
beq L43
|
||||||
\s\ssub\s\s r1, r1, #128
|
sub r1, r1, #128
|
||||||
\s\scmp\s\s r1, #127
|
cmp r1, #127
|
||||||
\s\scmp\s\s r1, #31
|
cmp r1, #31
|
||||||
\s\smovls\s\s lr, r3
|
movls lr, r3
|
||||||
\s\svstm r12!, {d0-d15}
|
vstm r12!, {d0-d15}
|
||||||
L43:
|
L43:
|
||||||
\s\scmp\s\s r1, #0
|
cmp r1, #0
|
||||||
\s\sbne\s\s L34
|
bne L34
|
||||||
\s\sldmfd\s\s sp!, {pc}
|
ldmfd sp!, {pc}
|
||||||
\s\s
|
|
@ -33,25 +33,25 @@ InternalMemSetMem (
|
|||||||
IN UINT8 Value
|
IN UINT8 Value
|
||||||
)
|
)
|
||||||
**/
|
**/
|
||||||
\s\s
|
|
||||||
\s\sEXPORT InternalMemSetMem
|
EXPORT InternalMemSetMem
|
||||||
\s\s
|
|
||||||
\s\sAREA AsmMemStuff, CODE, READONLY
|
AREA AsmMemStuff, CODE, READONLY
|
||||||
|
|
||||||
InternalMemSetMem
|
InternalMemSetMem
|
||||||
\s\sstmfd\s\ssp!, {lr}
|
stmfd sp!, {lr}
|
||||||
\s\stst\s\s r0, #3
|
tst r0, #3
|
||||||
\s\smovne\s\sr3, #0
|
movne r3, #0
|
||||||
\s\smoveq\s\sr3, #1
|
moveq r3, #1
|
||||||
\s\scmp\s\s r1, #127
|
cmp r1, #127
|
||||||
\s\smovls lr, #0
|
movls lr, #0
|
||||||
\s\sandhi\s\slr, r3, #1
|
andhi lr, r3, #1
|
||||||
\s\scmp\s\s lr, #0
|
cmp lr, #0
|
||||||
\s\smov\s\s r12, r0
|
mov r12, r0
|
||||||
\s\sbne\s\s L31
|
bne L31
|
||||||
L32
|
L32
|
||||||
\s\smov\s\s r3, #0
|
mov r3, #0
|
||||||
\s\sb\s\s L43
|
b L43
|
||||||
L31
|
L31
|
||||||
vdup.8 q0,r2
|
vdup.8 q0,r2
|
||||||
vmov q1,q0
|
vmov q1,q0
|
||||||
@ -61,20 +61,20 @@ L31
|
|||||||
vmov q5,q0
|
vmov q5,q0
|
||||||
vmov q6,q0
|
vmov q6,q0
|
||||||
vmov q7,q0
|
vmov q7,q0
|
||||||
\s\sb\s\s L32
|
b L32
|
||||||
L34
|
L34
|
||||||
\s\scmp\s\s lr, #0
|
cmp lr, #0
|
||||||
\s\sstreqb\s\sr2, [r12], #1
|
streqb r2, [r12], #1
|
||||||
\s\ssubeq\s\s r1, r1, #1
|
subeq r1, r1, #1
|
||||||
\s\sbeq\s\s L43
|
beq L43
|
||||||
\s\ssub\s\s r1, r1, #128
|
sub r1, r1, #128
|
||||||
\s\scmp\s\s r1, #127
|
cmp r1, #127
|
||||||
\s\smovls\s\s lr, r3
|
movls lr, r3
|
||||||
\s\svstm r12!, {d0-d15}
|
vstm r12!, {d0-d15}
|
||||||
L43
|
L43
|
||||||
\s\scmp\s\s r1, #0
|
cmp r1, #0
|
||||||
\s\sbne\s\s L34
|
bne L34
|
||||||
\s\sldmfd\s\s sp!, {pc}
|
ldmfd sp!, {pc}
|
||||||
\s\s
|
|
||||||
END
|
END
|
||||||
|
|
@ -34,8 +34,8 @@ EFI_STATUS BdsLoadFileFromSimpleFileSystem(
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Try to Open the volume and get root directory
|
//Try to Open the volume and get root directory
|
||||||
\s\sStatus = FsProtocol->OpenVolume(FsProtocol, &Fs);
|
Status = FsProtocol->OpenVolume(FsProtocol, &Fs);
|
||||||
\s\sif (EFI_ERROR(Status)) {
|
if (EFI_ERROR(Status)) {
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,24 +12,24 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__ashldi3)
|
GCC_ASM_EXPORT(__ashldi3)
|
||||||
\s\s
|
|
||||||
ASM_PFX(__ashldi3):
|
ASM_PFX(__ashldi3):
|
||||||
\s\scmp\s\sr2, #31
|
cmp r2, #31
|
||||||
\s\sbls\s\sL2
|
bls L2
|
||||||
\s\scmp\s\sr2, #63
|
cmp r2, #63
|
||||||
\s\ssubls\s\sr2, r2, #32
|
subls r2, r2, #32
|
||||||
\s\smovls\s\sr2, r0, asl r2
|
movls r2, r0, asl r2
|
||||||
\s\smovhi\s\sr2, #0
|
movhi r2, #0
|
||||||
\s\smov\s\sr1, r2
|
mov r1, r2
|
||||||
\s\smov\s\sr0, #0
|
mov r0, #0
|
||||||
\s\sbx\s\slr
|
bx lr
|
||||||
L2:
|
L2:
|
||||||
\s\scmp\s\sr2, #0
|
cmp r2, #0
|
||||||
\s\srsbne\s\sr3, r2, #32
|
rsbne r3, r2, #32
|
||||||
\s\smovne\s\sr3, r0, lsr r3
|
movne r3, r0, lsr r3
|
||||||
\s\smovne\s\sr0, r0, asl r2
|
movne r0, r0, asl r2
|
||||||
\s\sorrne\s\sr1, r3, r1, asl r2
|
orrne r1, r3, r1, asl r2
|
||||||
\s\sbx\s\slr
|
bx lr
|
||||||
|
@ -12,25 +12,25 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__ashrdi3)
|
GCC_ASM_EXPORT(__ashrdi3)
|
||||||
|
|
||||||
ASM_PFX(__ashrdi3):
|
ASM_PFX(__ashrdi3):
|
||||||
\s\scmp\s\sr2, #31
|
cmp r2, #31
|
||||||
\s\sbls\s\sL2
|
bls L2
|
||||||
\s\scmp\s\sr2, #63
|
cmp r2, #63
|
||||||
\s\ssubls\s\sr2, r2, #32
|
subls r2, r2, #32
|
||||||
\s\smov\s\sip, r1, asr #31
|
mov ip, r1, asr #31
|
||||||
\s\smovls\s\sr2, r1, asr r2
|
movls r2, r1, asr r2
|
||||||
\s\smovhi\s\sr2, ip
|
movhi r2, ip
|
||||||
\s\smov\s\sr0, r2
|
mov r0, r2
|
||||||
\s\smov\s\sr1, ip
|
mov r1, ip
|
||||||
\s\sbx\s\slr
|
bx lr
|
||||||
L2:
|
L2:
|
||||||
\s\scmp\s\sr2, #0
|
cmp r2, #0
|
||||||
\s\srsbne\s\sr3, r2, #32
|
rsbne r3, r2, #32
|
||||||
\s\smovne\s\sr3, r1, asl r3
|
movne r3, r1, asl r3
|
||||||
\s\smovne\s\sr1, r1, asr r2
|
movne r1, r1, asr r2
|
||||||
\s\sorrne\s\sr0, r3, r0, lsr r2
|
orrne r0, r3, r0, lsr r2
|
||||||
\s\sbx\s\slr
|
bx lr
|
||||||
|
@ -12,46 +12,46 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__clzsi2)
|
GCC_ASM_EXPORT(__clzsi2)
|
||||||
|
|
||||||
ASM_PFX(__clzsi2):
|
ASM_PFX(__clzsi2):
|
||||||
\s\s@ frame_needed = 1, uses_anonymous_args = 0
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
\s\sstmfd\s\ssp!, {r7, lr}
|
stmfd sp!, {r7, lr}
|
||||||
\s\sadd\s\sr7, sp, #0
|
add r7, sp, #0
|
||||||
\s\smovs\s\sr3, r0, lsr #16
|
movs r3, r0, lsr #16
|
||||||
\s\smovne\s\sr3, #16
|
movne r3, #16
|
||||||
\s\smoveq\s\sr3, #0
|
moveq r3, #0
|
||||||
\s\smovne\s\sr9, #0
|
movne r9, #0
|
||||||
\s\smoveq\s\sr9, #16
|
moveq r9, #16
|
||||||
\s\smov\s\sr3, r0, lsr r3
|
mov r3, r0, lsr r3
|
||||||
\s\stst\s\sr3, #65280
|
tst r3, #65280
|
||||||
\s\smovne\s\sr0, #8
|
movne r0, #8
|
||||||
\s\smoveq\s\sr0, #0
|
moveq r0, #0
|
||||||
\s\smovne\s\slr, #0
|
movne lr, #0
|
||||||
\s\smoveq\s\slr, #8
|
moveq lr, #8
|
||||||
\s\smov\s\sr3, r3, lsr r0
|
mov r3, r3, lsr r0
|
||||||
\s\stst\s\sr3, #240
|
tst r3, #240
|
||||||
\s\smovne\s\sr0, #4
|
movne r0, #4
|
||||||
\s\smoveq\s\sr0, #0
|
moveq r0, #0
|
||||||
\s\smovne\s\sip, #0
|
movne ip, #0
|
||||||
\s\smoveq\s\sip, #4
|
moveq ip, #4
|
||||||
\s\smov\s\sr3, r3, lsr r0
|
mov r3, r3, lsr r0
|
||||||
\s\stst\s\sr3, #12
|
tst r3, #12
|
||||||
\s\smovne\s\sr0, #2
|
movne r0, #2
|
||||||
\s\smoveq\s\sr0, #0
|
moveq r0, #0
|
||||||
\s\smovne\s\sr1, #0
|
movne r1, #0
|
||||||
\s\smoveq\s\sr1, #2
|
moveq r1, #2
|
||||||
\s\smov\s\sr2, r3, lsr r0
|
mov r2, r3, lsr r0
|
||||||
\s\sadd\s\sr3, lr, r9
|
add r3, lr, r9
|
||||||
\s\sadd\s\sr0, r3, ip
|
add r0, r3, ip
|
||||||
\s\sadd\s\sr1, r0, r1
|
add r1, r0, r1
|
||||||
\s\smov\s\sr0, r2, lsr #1
|
mov r0, r2, lsr #1
|
||||||
\s\seor\s\sr0, r0, #1
|
eor r0, r0, #1
|
||||||
\s\sands\s\sr0, r0, #1
|
ands r0, r0, #1
|
||||||
\s\smvnne\s\sr0, #0
|
mvnne r0, #0
|
||||||
\s\srsb\s\sr3, r2, #2
|
rsb r3, r2, #2
|
||||||
\s\sand\s\sr0, r0, r3
|
and r0, r0, r3
|
||||||
\s\sadd\s\sr0, r1, r0
|
add r0, r1, r0
|
||||||
\s\sldmfd\s\ssp!, {r7, pc}
|
ldmfd sp!, {r7, pc}
|
||||||
|
@ -12,38 +12,38 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__ctzsi2)
|
GCC_ASM_EXPORT(__ctzsi2)
|
||||||
\s\s
|
|
||||||
ASM_PFX(__ctzsi2):
|
ASM_PFX(__ctzsi2):
|
||||||
\s\suxth\s\sr3, r0
|
uxth r3, r0
|
||||||
\s\scmp\s\sr3, #0
|
cmp r3, #0
|
||||||
\s\smoveq\s\sip, #16
|
moveq ip, #16
|
||||||
\s\smovne\s\sip, #0
|
movne ip, #0
|
||||||
\s\s@ lr needed for prologue
|
@ lr needed for prologue
|
||||||
\s\smov\s\sr0, r0, lsr ip
|
mov r0, r0, lsr ip
|
||||||
\s\stst\s\sr0, #255
|
tst r0, #255
|
||||||
\s\smovne\s\sr3, #0
|
movne r3, #0
|
||||||
\s\smoveq\s\sr3, #8
|
moveq r3, #8
|
||||||
\s\smov\s\sr0, r0, lsr r3
|
mov r0, r0, lsr r3
|
||||||
\s\stst\s\sr0, #15
|
tst r0, #15
|
||||||
\s\smovne\s\sr1, #0
|
movne r1, #0
|
||||||
\s\smoveq\s\sr1, #4
|
moveq r1, #4
|
||||||
\s\sadd\s\sr3, r3, ip
|
add r3, r3, ip
|
||||||
\s\smov\s\sr0, r0, lsr r1
|
mov r0, r0, lsr r1
|
||||||
\s\stst\s\sr0, #3
|
tst r0, #3
|
||||||
\s\smovne\s\sr2, #0
|
movne r2, #0
|
||||||
\s\smoveq\s\sr2, #2
|
moveq r2, #2
|
||||||
\s\sadd\s\sr3, r3, r1
|
add r3, r3, r1
|
||||||
\s\smov\s\sr0, r0, lsr r2
|
mov r0, r0, lsr r2
|
||||||
\s\sand\s\sr0, r0, #3
|
and r0, r0, #3
|
||||||
\s\sadd\s\sr2, r3, r2
|
add r2, r3, r2
|
||||||
\s\seor\s\sr3, r0, #1
|
eor r3, r0, #1
|
||||||
\s\smov\s\sr0, r0, lsr #1
|
mov r0, r0, lsr #1
|
||||||
\s\sands\s\sr3, r3, #1
|
ands r3, r3, #1
|
||||||
\s\smvnne\s\sr3, #0
|
mvnne r3, #0
|
||||||
\s\srsb\s\sr0, r0, #2
|
rsb r0, r0, #2
|
||||||
\s\sand\s\sr0, r3, r0
|
and r0, r3, r0
|
||||||
\s\sadd\s\sr0, r2, r0
|
add r0, r2, r0
|
||||||
\s\sbx\s\slr
|
bx lr
|
||||||
|
@ -12,38 +12,38 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__divdi3)
|
GCC_ASM_EXPORT(__divdi3)
|
||||||
\s\s
|
|
||||||
ASM_PFX(__divdi3):
|
ASM_PFX(__divdi3):
|
||||||
\s\s@ args = 0, pretend = 0, frame = 0
|
@ args = 0, pretend = 0, frame = 0
|
||||||
\s\s@ frame_needed = 1, uses_anonymous_args = 0
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
\s\sstmfd\s\ssp!, {r4, r5, r7, lr}
|
stmfd sp!, {r4, r5, r7, lr}
|
||||||
\s\smov\s\sr4, r3, asr #31
|
mov r4, r3, asr #31
|
||||||
\s\sadd\s\sr7, sp, #8
|
add r7, sp, #8
|
||||||
\s\sstmfd\s\ssp!, {r10, r11}
|
stmfd sp!, {r10, r11}
|
||||||
\s\smov\s\sr10, r1, asr #31
|
mov r10, r1, asr #31
|
||||||
\s\ssub\s\ssp, sp, #8
|
sub sp, sp, #8
|
||||||
\s\smov\s\sr11, r10
|
mov r11, r10
|
||||||
\s\smov\s\sr5, r4
|
mov r5, r4
|
||||||
\s\seor\s\sr0, r0, r10
|
eor r0, r0, r10
|
||||||
\s\seor\s\sr1, r1, r10
|
eor r1, r1, r10
|
||||||
\s\seor\s\sr2, r2, r4
|
eor r2, r2, r4
|
||||||
\s\seor\s\sr3, r3, r4
|
eor r3, r3, r4
|
||||||
\s\ssubs\s\sr2, r2, r4
|
subs r2, r2, r4
|
||||||
\s\ssbc\s\sr3, r3, r5
|
sbc r3, r3, r5
|
||||||
\s\smov\s\sip, #0
|
mov ip, #0
|
||||||
\s\ssubs\s\sr0, r0, r10
|
subs r0, r0, r10
|
||||||
\s\ssbc\s\sr1, r1, r11
|
sbc r1, r1, r11
|
||||||
\s\sstr\s\sip, [sp, #0]
|
str ip, [sp, #0]
|
||||||
\s\sbl\s\sASM_PFX(__udivmoddi4)
|
bl ASM_PFX(__udivmoddi4)
|
||||||
\s\seor\s\sr2, r10, r4
|
eor r2, r10, r4
|
||||||
\s\seor\s\sr3, r10, r4
|
eor r3, r10, r4
|
||||||
\s\seor\s\sr0, r0, r2
|
eor r0, r0, r2
|
||||||
\s\seor\s\sr1, r1, r3
|
eor r1, r1, r3
|
||||||
\s\ssubs\s\sr0, r0, r2
|
subs r0, r0, r2
|
||||||
\s\ssbc\s\sr1, r1, r3
|
sbc r1, r1, r3
|
||||||
\s\ssub\s\ssp, r7, #16
|
sub sp, r7, #16
|
||||||
\s\sldmfd\s\ssp!, {r10, r11}
|
ldmfd sp!, {r10, r11}
|
||||||
\s\sldmfd\s\ssp!, {r4, r5, r7, pc}
|
ldmfd sp!, {r4, r5, r7, pc}
|
||||||
|
@ -12,21 +12,21 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__divsi3)
|
GCC_ASM_EXPORT(__divsi3)
|
||||||
\s\s
|
|
||||||
ASM_PFX(__divsi3):
|
ASM_PFX(__divsi3):
|
||||||
\s\seor\s\sr3, r0, r0, asr #31
|
eor r3, r0, r0, asr #31
|
||||||
\s\seor\s\sr2, r1, r1, asr #31
|
eor r2, r1, r1, asr #31
|
||||||
\s\sstmfd\s\ssp!, {r4, r5, r7, lr}
|
stmfd sp!, {r4, r5, r7, lr}
|
||||||
\s\smov\s\sr5, r0, asr #31
|
mov r5, r0, asr #31
|
||||||
\s\sadd\s\sr7, sp, #8
|
add r7, sp, #8
|
||||||
\s\smov\s\sr4, r1, asr #31
|
mov r4, r1, asr #31
|
||||||
\s\ssub\s\sr0, r3, r0, asr #31
|
sub r0, r3, r0, asr #31
|
||||||
\s\ssub\s\sr1, r2, r1, asr #31
|
sub r1, r2, r1, asr #31
|
||||||
\s\sbl\s\sASM_PFX(__udivsi3)
|
bl ASM_PFX(__udivsi3)
|
||||||
\s\seor\s\sr1, r5, r4
|
eor r1, r5, r4
|
||||||
\s\seor\s\sr0, r0, r1
|
eor r0, r0, r1
|
||||||
\s\srsb\s\sr0, r1, r0
|
rsb r0, r1, r0
|
||||||
\s\sldmfd\s\ssp!, {r4, r5, r7, pc}
|
ldmfd sp!, {r4, r5, r7, pc}
|
||||||
|
@ -13,9 +13,9 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__aeabi_ldivmod)
|
GCC_ASM_EXPORT(__aeabi_ldivmod)
|
||||||
|
|
||||||
//
|
//
|
||||||
// A pair of (unsigned) long longs is returned in {{r0, r1}, {r2, r3}},
|
// A pair of (unsigned) long longs is returned in {{r0, r1}, {r2, r3}},
|
||||||
|
@ -12,24 +12,24 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__lshrdi3)
|
GCC_ASM_EXPORT(__lshrdi3)
|
||||||
\s\s
|
|
||||||
ASM_PFX(__lshrdi3):
|
ASM_PFX(__lshrdi3):
|
||||||
\s\scmp\s\sr2, #31
|
cmp r2, #31
|
||||||
\s\sbls\s\sL2
|
bls L2
|
||||||
\s\scmp\s\sr2, #63
|
cmp r2, #63
|
||||||
\s\ssubls\s\sr2, r2, #32
|
subls r2, r2, #32
|
||||||
\s\smovls\s\sr2, r1, lsr r2
|
movls r2, r1, lsr r2
|
||||||
\s\smovhi\s\sr2, #0
|
movhi r2, #0
|
||||||
\s\smov\s\sr0, r2
|
mov r0, r2
|
||||||
\s\smov\s\sr1, #0
|
mov r1, #0
|
||||||
\s\sbx\s\slr
|
bx lr
|
||||||
L2:
|
L2:
|
||||||
\s\scmp\s\sr2, #0
|
cmp r2, #0
|
||||||
\s\srsbne\s\sr3, r2, #32
|
rsbne r3, r2, #32
|
||||||
\s\smovne\s\sr3, r1, asl r3
|
movne r3, r1, asl r3
|
||||||
\s\smovne\s\sr1, r1, lsr r2
|
movne r1, r1, lsr r2
|
||||||
\s\sorrne\s\sr0, r3, r0, lsr r2
|
orrne r0, r3, r0, lsr r2
|
||||||
\s\sbx\s\slr
|
bx lr
|
||||||
|
@ -12,23 +12,23 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(memcpy)
|
GCC_ASM_EXPORT(memcpy)
|
||||||
|
|
||||||
ASM_PFX(memcpy):
|
ASM_PFX(memcpy):
|
||||||
\s\sstmfd\s\ssp!, {r7, lr}
|
stmfd sp!, {r7, lr}
|
||||||
\s\smov\s\sip, #0
|
mov ip, #0
|
||||||
\s\sadd\s\sr7, sp, #0
|
add r7, sp, #0
|
||||||
\s\smov\s\slr, r0
|
mov lr, r0
|
||||||
\s\sb\s\sL4
|
b L4
|
||||||
L5:
|
L5:
|
||||||
\s\sldrb\s\sr3, [r1], #1\s\s@ zero_extendqisi2
|
ldrb r3, [r1], #1 @ zero_extendqisi2
|
||||||
\s\sadd\s\sip, ip, #1
|
add ip, ip, #1
|
||||||
\s\sand\s\sr3, r3, #255
|
and r3, r3, #255
|
||||||
\s\sstrb\s\sr3, [lr], #1
|
strb r3, [lr], #1
|
||||||
L4:
|
L4:
|
||||||
\s\scmp\s\sip, r2
|
cmp ip, r2
|
||||||
\s\sbne\s\sL5
|
bne L5
|
||||||
\s\sldmfd\s\ssp!, {r7, pc}
|
ldmfd sp!, {r7, pc}
|
||||||
|
|
||||||
|
@ -14,25 +14,25 @@
|
|||||||
|
|
||||||
|
|
||||||
.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT (memset)
|
GCC_ASM_EXPORT (memset)
|
||||||
|
|
||||||
|
|
||||||
ASM_PFX(memset):
|
ASM_PFX(memset):
|
||||||
|
|
||||||
\s\s@ args = 0, pretend = 0, frame = 0
|
@ args = 0, pretend = 0, frame = 0
|
||||||
\s\s@ frame_needed = 1, uses_anonymous_args = 0
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
\s\sstmfd\s\ssp!, {r7, lr}
|
stmfd sp!, {r7, lr}
|
||||||
\s\smov\s\sip, #0
|
mov ip, #0
|
||||||
\s\sadd\s\sr7, sp, #0
|
add r7, sp, #0
|
||||||
\s\smov\s\slr, r0
|
mov lr, r0
|
||||||
\s\sb\s\sL9
|
b L9
|
||||||
L10:
|
L10:
|
||||||
\s\sand\s\sr3, r1, #255
|
and r3, r1, #255
|
||||||
\s\sadd\s\sip, ip, #1
|
add ip, ip, #1
|
||||||
\s\sstrb\s\sr3, [lr], #1
|
strb r3, [lr], #1
|
||||||
L9:
|
L9:
|
||||||
\s\scmp\s\sip, r2
|
cmp ip, r2
|
||||||
\s\sbne\s\sL10
|
bne L10
|
||||||
\s\sldmfd\s\ssp!, {r7, pc}
|
ldmfd sp!, {r7, pc}
|
||||||
|
|
||||||
|
@ -12,35 +12,35 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__moddi3)
|
GCC_ASM_EXPORT(__moddi3)
|
||||||
|
|
||||||
ASM_PFX(__moddi3):
|
ASM_PFX(__moddi3):
|
||||||
\s\sstmfd\s\ssp!, {r4, r5, r7, lr}
|
stmfd sp!, {r4, r5, r7, lr}
|
||||||
\s\smov\s\sr4, r1, asr #31
|
mov r4, r1, asr #31
|
||||||
\s\sadd\s\sr7, sp, #8
|
add r7, sp, #8
|
||||||
\s\sstmfd\s\ssp!, {r10, r11}
|
stmfd sp!, {r10, r11}
|
||||||
\s\smov\s\sr10, r3, asr #31
|
mov r10, r3, asr #31
|
||||||
\s\ssub\s\ssp, sp, #16
|
sub sp, sp, #16
|
||||||
\s\smov\s\sr5, r4
|
mov r5, r4
|
||||||
\s\smov\s\sr11, r10
|
mov r11, r10
|
||||||
\s\seor\s\sr0, r0, r4
|
eor r0, r0, r4
|
||||||
\s\seor\s\sr1, r1, r4
|
eor r1, r1, r4
|
||||||
\s\seor\s\sr2, r2, r10
|
eor r2, r2, r10
|
||||||
\s\seor\s\sr3, r3, r10
|
eor r3, r3, r10
|
||||||
\s\sadd\s\sip, sp, #8
|
add ip, sp, #8
|
||||||
\s\ssubs\s\sr0, r0, r4
|
subs r0, r0, r4
|
||||||
\s\ssbc\s\sr1, r1, r5
|
sbc r1, r1, r5
|
||||||
\s\ssubs\s\sr2, r2, r10
|
subs r2, r2, r10
|
||||||
\s\ssbc\s\sr3, r3, r11
|
sbc r3, r3, r11
|
||||||
\s\sstr\s\sip, [sp, #0]
|
str ip, [sp, #0]
|
||||||
\s\sbl\s\sASM_PFX(__udivmoddi4)
|
bl ASM_PFX(__udivmoddi4)
|
||||||
\s\sldrd\s\sr0, [sp, #8]
|
ldrd r0, [sp, #8]
|
||||||
\s\seor\s\sr0, r0, r4
|
eor r0, r0, r4
|
||||||
\s\seor\s\sr1, r1, r4
|
eor r1, r1, r4
|
||||||
\s\ssubs\s\sr0, r0, r4
|
subs r0, r0, r4
|
||||||
\s\ssbc\s\sr1, r1, r5
|
sbc r1, r1, r5
|
||||||
\s\ssub\s\ssp, r7, #16
|
sub sp, r7, #16
|
||||||
\s\sldmfd\s\ssp!, {r10, r11}
|
ldmfd sp!, {r10, r11}
|
||||||
\s\sldmfd\s\ssp!, {r4, r5, r7, pc}
|
ldmfd sp!, {r4, r5, r7, pc}
|
||||||
|
@ -12,16 +12,16 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__modsi3)
|
GCC_ASM_EXPORT(__modsi3)
|
||||||
|
|
||||||
ASM_PFX(__modsi3):
|
ASM_PFX(__modsi3):
|
||||||
\s\sstmfd\s\ssp!, {r4, r5, r7, lr}
|
stmfd sp!, {r4, r5, r7, lr}
|
||||||
\s\sadd\s\sr7, sp, #8
|
add r7, sp, #8
|
||||||
\s\smov\s\sr5, r0
|
mov r5, r0
|
||||||
\s\smov\s\sr4, r1
|
mov r4, r1
|
||||||
\s\sbl\s\s___divsi3
|
bl ___divsi3
|
||||||
\s\smul\s\sr0, r4, r0
|
mul r0, r4, r0
|
||||||
\s\srsb\s\sr0, r0, r5
|
rsb r0, r0, r5
|
||||||
\s\sldmfd\s\ssp!, {r4, r5, r7, pc}
|
ldmfd sp!, {r4, r5, r7, pc}
|
||||||
|
@ -12,47 +12,47 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__muldi3)
|
GCC_ASM_EXPORT(__muldi3)
|
||||||
|
|
||||||
ASM_PFX(__muldi3):
|
ASM_PFX(__muldi3):
|
||||||
\s\sstmfd\s\ssp!, {r4, r5, r6, r7, lr}
|
stmfd sp!, {r4, r5, r6, r7, lr}
|
||||||
\s\sadd\s\sr7, sp, #12
|
add r7, sp, #12
|
||||||
\s\sstmfd\s\ssp!, {r8, r10, r11}
|
stmfd sp!, {r8, r10, r11}
|
||||||
\s\sldr\s\sr11, L4
|
ldr r11, L4
|
||||||
\s\smov\s\sr4, r0, lsr #16
|
mov r4, r0, lsr #16
|
||||||
\s\sand\s\sr8, r0, r11
|
and r8, r0, r11
|
||||||
\s\sand\s\sip, r2, r11
|
and ip, r2, r11
|
||||||
\s\smul\s\slr, ip, r8
|
mul lr, ip, r8
|
||||||
\s\smul\s\sip, r4, ip
|
mul ip, r4, ip
|
||||||
\s\ssub\s\ssp, sp, #8
|
sub sp, sp, #8
|
||||||
\s\sadd\s\sr10, ip, lr, lsr #16
|
add r10, ip, lr, lsr #16
|
||||||
\s\sand\s\sip, r10, r11
|
and ip, r10, r11
|
||||||
\s\sand\s\slr, lr, r11
|
and lr, lr, r11
|
||||||
\s\smov\s\sr6, r2, lsr #16
|
mov r6, r2, lsr #16
|
||||||
\s\sstr\s\sr4, [sp, #4]
|
str r4, [sp, #4]
|
||||||
\s\sadd\s\sr4, lr, ip, asl #16
|
add r4, lr, ip, asl #16
|
||||||
\s\smul\s\sip, r8, r6
|
mul ip, r8, r6
|
||||||
\s\smov\s\sr5, r10, lsr #16
|
mov r5, r10, lsr #16
|
||||||
\s\sadd\s\sr10, ip, r4, lsr #16
|
add r10, ip, r4, lsr #16
|
||||||
\s\sand\s\sip, r10, r11
|
and ip, r10, r11
|
||||||
\s\sand\s\slr, r4, r11
|
and lr, r4, r11
|
||||||
\s\sadd\s\sr4, lr, ip, asl #16
|
add r4, lr, ip, asl #16
|
||||||
\s\smul\s\sr0, r3, r0
|
mul r0, r3, r0
|
||||||
\s\sadd\s\sip, r5, r10, lsr #16
|
add ip, r5, r10, lsr #16
|
||||||
\s\sldr\s\sr5, [sp, #4]
|
ldr r5, [sp, #4]
|
||||||
\s\smla\s\sr0, r2, r1, r0
|
mla r0, r2, r1, r0
|
||||||
\s\smla\s\sr5, r6, r5, ip
|
mla r5, r6, r5, ip
|
||||||
\s\smov\s\sr10, r4
|
mov r10, r4
|
||||||
\s\sadd\s\sr11, r0, r5
|
add r11, r0, r5
|
||||||
\s\smov\s\sr1, r11
|
mov r1, r11
|
||||||
\s\smov\s\sr0, r4
|
mov r0, r4
|
||||||
\s\ssub\s\ssp, r7, #24
|
sub sp, r7, #24
|
||||||
\s\sldmfd\s\ssp!, {r8, r10, r11}
|
ldmfd sp!, {r8, r10, r11}
|
||||||
\s\sldmfd\s\ssp!, {r4, r5, r6, r7, pc}
|
ldmfd sp!, {r4, r5, r6, r7, pc}
|
||||||
\s\s.p2align 2
|
.p2align 2
|
||||||
L5:
|
L5:
|
||||||
\s\s.align 2
|
.align 2
|
||||||
L4:
|
L4:
|
||||||
\s\s.long\s\s65535
|
.long 65535
|
||||||
|
@ -13,8 +13,8 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
EXPORT\s\s__ARM_ll_mullu
|
EXPORT __ARM_ll_mullu
|
||||||
EXPORT\s\s__aeabi_lmul
|
EXPORT __aeabi_lmul
|
||||||
|
|
||||||
AREA Math, CODE, READONLY
|
AREA Math, CODE, READONLY
|
||||||
|
|
||||||
|
@ -14,16 +14,16 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
EXPORT\s\s__ARM_switch8
|
EXPORT __ARM_switch8
|
||||||
|
|
||||||
|
AREA ArmSwitch, CODE, READONLY
|
||||||
|
|
||||||
AREA\s\sArmSwitch, CODE, READONLY
|
|
||||||
\s\s
|
|
||||||
__ARM_switch8
|
__ARM_switch8
|
||||||
\s\sLDRB\s\s r12,[lr,#-1]
|
LDRB r12,[lr,#-1]
|
||||||
\s\sCMP\s\s\s\s r3,r12
|
CMP r3,r12
|
||||||
\s\sLDRBCC\s\sr3,[lr,r3]
|
LDRBCC r3,[lr,r3]
|
||||||
\s\sLDRBCS\s\sr3,[lr,r12]
|
LDRBCS r3,[lr,r12]
|
||||||
\s\sADD\s\s\s\s r12,lr,r3,LSL #1
|
ADD r12,lr,r3,LSL #1
|
||||||
\s\sBX\s\s\s\s r12
|
BX r12
|
||||||
|
|
||||||
END
|
END
|
||||||
|
@ -12,27 +12,27 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__ucmpdi2)
|
GCC_ASM_EXPORT(__ucmpdi2)
|
||||||
\s\s
|
|
||||||
ASM_PFX(__ucmpdi2):
|
ASM_PFX(__ucmpdi2):
|
||||||
\s\sstmfd\s\ssp!, {r4, r5, r8, lr}
|
stmfd sp!, {r4, r5, r8, lr}
|
||||||
\s\scmp\s\sr1, r3
|
cmp r1, r3
|
||||||
\s\smov\s\sr8, r0
|
mov r8, r0
|
||||||
\s\smov\s\sr4, r2
|
mov r4, r2
|
||||||
\s\smov\s\sr5, r3
|
mov r5, r3
|
||||||
\s\sbcc\s\sL2
|
bcc L2
|
||||||
\s\sbhi\s\sL4
|
bhi L4
|
||||||
\s\scmp\s\sr0, r2
|
cmp r0, r2
|
||||||
\s\sbcc\s\sL2
|
bcc L2
|
||||||
\s\smovls\s\sr0, #1
|
movls r0, #1
|
||||||
\s\sbls\s\sL8
|
bls L8
|
||||||
\s\sb\s\sL4
|
b L4
|
||||||
L2:
|
L2:
|
||||||
\s\smov\s\sr0, #0
|
mov r0, #0
|
||||||
\s\sb\s\sL8
|
b L8
|
||||||
L4:
|
L4:
|
||||||
\s\smov\s\sr0, #2
|
mov r0, #2
|
||||||
L8:
|
L8:
|
||||||
\s\sldmfd\s\ssp!, {r4, r5, r8, pc}
|
ldmfd sp!, {r4, r5, r8, pc}
|
||||||
|
@ -12,16 +12,16 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__udivdi3)
|
GCC_ASM_EXPORT(__udivdi3)
|
||||||
|
|
||||||
ASM_PFX(__udivdi3):
|
ASM_PFX(__udivdi3):
|
||||||
\s\sstmfd\s\ssp!, {r7, lr}
|
stmfd sp!, {r7, lr}
|
||||||
\s\sadd\s\sr7, sp, #0
|
add r7, sp, #0
|
||||||
\s\ssub\s\ssp, sp, #8
|
sub sp, sp, #8
|
||||||
\s\smov\s\sip, #0
|
mov ip, #0
|
||||||
\s\sstr\s\sip, [sp, #0]
|
str ip, [sp, #0]
|
||||||
\s\sbl\s\sASM_PFX(__udivmoddi4)
|
bl ASM_PFX(__udivmoddi4)
|
||||||
\s\ssub\s\ssp, r7, #0
|
sub sp, r7, #0
|
||||||
\s\sldmfd\s\ssp!, {r7, pc}
|
ldmfd sp!, {r7, pc}
|
||||||
|
@ -12,231 +12,231 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__udivmoddi4)
|
GCC_ASM_EXPORT(__udivmoddi4)
|
||||||
\s\s
|
|
||||||
ASM_PFX(__udivmoddi4):
|
ASM_PFX(__udivmoddi4):
|
||||||
\s\sstmfd\s\ssp!, {r4, r5, r6, r7, lr}
|
stmfd sp!, {r4, r5, r6, r7, lr}
|
||||||
\s\sadd\s\sr7, sp, #12
|
add r7, sp, #12
|
||||||
\s\sstmfd\s\ssp!, {r10, r11}
|
stmfd sp!, {r10, r11}
|
||||||
\s\ssub\s\ssp, sp, #20
|
sub sp, sp, #20
|
||||||
\s\sstmia\s\ssp, {r2-r3}
|
stmia sp, {r2-r3}
|
||||||
\s\sldr\s\sr6, [sp, #48]
|
ldr r6, [sp, #48]
|
||||||
\s\sorrs\s\sr2, r2, r3
|
orrs r2, r2, r3
|
||||||
\s\smov\s\sr10, r0
|
mov r10, r0
|
||||||
\s\smov\s\sr11, r1
|
mov r11, r1
|
||||||
\s\sbeq\s\sL2
|
beq L2
|
||||||
\s\ssubs\s\sip, r1, #0
|
subs ip, r1, #0
|
||||||
\s\sbne\s\sL4
|
bne L4
|
||||||
\s\scmp\s\sr3, #0
|
cmp r3, #0
|
||||||
\s\sbne\s\sL6
|
bne L6
|
||||||
\s\scmp\s\sr6, #0
|
cmp r6, #0
|
||||||
\s\sbeq\s\sL8
|
beq L8
|
||||||
\s\smov\s\sr1, r2
|
mov r1, r2
|
||||||
\s\sbl\s\sASM_PFX(__umodsi3)
|
bl ASM_PFX(__umodsi3)
|
||||||
\s\smov\s\sr1, #0
|
mov r1, #0
|
||||||
\s\sstmia\s\sr6, {r0-r1}
|
stmia r6, {r0-r1}
|
||||||
L8:
|
L8:
|
||||||
\s\sldr\s\sr1, [sp, #0]
|
ldr r1, [sp, #0]
|
||||||
\s\smov\s\sr0, r10
|
mov r0, r10
|
||||||
\s\sb\s\sL45
|
b L45
|
||||||
L6:
|
L6:
|
||||||
\s\scmp\s\sr6, #0
|
cmp r6, #0
|
||||||
\s\smovne\s\sr1, #0
|
movne r1, #0
|
||||||
\s\sstmneia\s\sr6, {r0-r1}
|
stmneia r6, {r0-r1}
|
||||||
\s\sb\s\sL2
|
b L2
|
||||||
L4:
|
L4:
|
||||||
\s\sldr\s\sr1, [sp, #0]
|
ldr r1, [sp, #0]
|
||||||
\s\scmp\s\sr1, #0
|
cmp r1, #0
|
||||||
\s\sbne\s\sL12
|
bne L12
|
||||||
\s\sldr\s\sr2, [sp, #4]
|
ldr r2, [sp, #4]
|
||||||
\s\scmp\s\sr2, #0
|
cmp r2, #0
|
||||||
\s\sbne\s\sL14
|
bne L14
|
||||||
\s\scmp\s\sr6, #0
|
cmp r6, #0
|
||||||
\s\sbeq\s\sL16
|
beq L16
|
||||||
\s\smov\s\sr1, r2
|
mov r1, r2
|
||||||
\s\smov\s\sr0, r11
|
mov r0, r11
|
||||||
\s\sbl\s\sASM_PFX(__umodsi3)
|
bl ASM_PFX(__umodsi3)
|
||||||
\s\smov\s\sr1, #0
|
mov r1, #0
|
||||||
\s\sstmia\s\sr6, {r0-r1}
|
stmia r6, {r0-r1}
|
||||||
L16:
|
L16:
|
||||||
\s\sldr\s\sr1, [sp, #4]
|
ldr r1, [sp, #4]
|
||||||
\s\smov\s\sr0, r11
|
mov r0, r11
|
||||||
L45:
|
L45:
|
||||||
\s\sbl\s\sASM_PFX(__udivsi3)
|
bl ASM_PFX(__udivsi3)
|
||||||
L46:
|
L46:
|
||||||
\s\smov\s\sr10, r0
|
mov r10, r0
|
||||||
\s\smov\s\sr11, #0
|
mov r11, #0
|
||||||
\s\sb\s\sL10
|
b L10
|
||||||
L14:
|
L14:
|
||||||
\s\ssubs\s\sr1, r0, #0
|
subs r1, r0, #0
|
||||||
\s\sbne\s\sL18
|
bne L18
|
||||||
\s\scmp\s\sr6, #0
|
cmp r6, #0
|
||||||
\s\sbeq\s\sL16
|
beq L16
|
||||||
\s\sldr\s\sr1, [sp, #4]
|
ldr r1, [sp, #4]
|
||||||
\s\smov\s\sr0, r11
|
mov r0, r11
|
||||||
\s\sbl\s\sASM_PFX(__umodsi3)
|
bl ASM_PFX(__umodsi3)
|
||||||
\s\smov\s\sr4, r10
|
mov r4, r10
|
||||||
\s\smov\s\sr5, r0
|
mov r5, r0
|
||||||
\s\sstmia\s\sr6, {r4-r5}
|
stmia r6, {r4-r5}
|
||||||
\s\sb\s\sL16
|
b L16
|
||||||
L18:
|
L18:
|
||||||
\s\ssub\s\sr3, r2, #1
|
sub r3, r2, #1
|
||||||
\s\stst\s\sr2, r3
|
tst r2, r3
|
||||||
\s\sbne\s\sL22
|
bne L22
|
||||||
\s\scmp\s\sr6, #0
|
cmp r6, #0
|
||||||
\s\smovne\s\sr4, r0
|
movne r4, r0
|
||||||
\s\sandne\s\sr5, ip, r3
|
andne r5, ip, r3
|
||||||
\s\sstmneia\s\sr6, {r4-r5}
|
stmneia r6, {r4-r5}
|
||||||
L24:
|
L24:
|
||||||
\s\srsb\s\sr3, r2, #0
|
rsb r3, r2, #0
|
||||||
\s\sand\s\sr3, r2, r3
|
and r3, r2, r3
|
||||||
\s\sclz\s\sr3, r3
|
clz r3, r3
|
||||||
\s\srsb\s\sr3, r3, #31
|
rsb r3, r3, #31
|
||||||
\s\smov\s\sr0, ip, lsr r3
|
mov r0, ip, lsr r3
|
||||||
\s\sb\s\sL46
|
b L46
|
||||||
L22:
|
L22:
|
||||||
\s\sclz\s\sr2, r2
|
clz r2, r2
|
||||||
\s\sclz\s\sr3, ip
|
clz r3, ip
|
||||||
\s\srsb\s\sr3, r3, r2
|
rsb r3, r3, r2
|
||||||
\s\scmp\s\sr3, #30
|
cmp r3, #30
|
||||||
\s\sbhi\s\sL48
|
bhi L48
|
||||||
\s\srsb\s\sr2, r3, #31
|
rsb r2, r3, #31
|
||||||
\s\sadd\s\slr, r3, #1
|
add lr, r3, #1
|
||||||
\s\smov\s\sr3, r1, asl r2
|
mov r3, r1, asl r2
|
||||||
\s\sstr\s\sr3, [sp, #12]
|
str r3, [sp, #12]
|
||||||
\s\smov\s\sr3, r1, lsr lr
|
mov r3, r1, lsr lr
|
||||||
\s\sldr\s\sr0, [sp, #0]
|
ldr r0, [sp, #0]
|
||||||
\s\smov\s\sr5, ip, lsr lr
|
mov r5, ip, lsr lr
|
||||||
\s\sorr\s\sr4, r3, ip, asl r2
|
orr r4, r3, ip, asl r2
|
||||||
\s\sstr\s\sr0, [sp, #8]
|
str r0, [sp, #8]
|
||||||
\s\sb\s\sL29
|
b L29
|
||||||
L12:
|
L12:
|
||||||
\s\sldr\s\sr3, [sp, #4]
|
ldr r3, [sp, #4]
|
||||||
\s\scmp\s\sr3, #0
|
cmp r3, #0
|
||||||
\s\sbne\s\sL30
|
bne L30
|
||||||
\s\ssub\s\sr3, r1, #1
|
sub r3, r1, #1
|
||||||
\s\stst\s\sr1, r3
|
tst r1, r3
|
||||||
\s\sbne\s\sL32
|
bne L32
|
||||||
\s\scmp\s\sr6, #0
|
cmp r6, #0
|
||||||
\s\sandne\s\sr3, r3, r0
|
andne r3, r3, r0
|
||||||
\s\smovne\s\sr2, r3
|
movne r2, r3
|
||||||
\s\smovne\s\sr3, #0
|
movne r3, #0
|
||||||
\s\sstmneia\s\sr6, {r2-r3}
|
stmneia r6, {r2-r3}
|
||||||
L34:
|
L34:
|
||||||
\s\scmp\s\sr1, #1
|
cmp r1, #1
|
||||||
\s\sbeq\s\sL10
|
beq L10
|
||||||
\s\srsb\s\sr3, r1, #0
|
rsb r3, r1, #0
|
||||||
\s\sand\s\sr3, r1, r3
|
and r3, r1, r3
|
||||||
\s\sclz\s\sr3, r3
|
clz r3, r3
|
||||||
\s\srsb\s\sr0, r3, #31
|
rsb r0, r3, #31
|
||||||
\s\smov\s\sr1, ip, lsr r0
|
mov r1, ip, lsr r0
|
||||||
\s\srsb\s\sr3, r0, #32
|
rsb r3, r0, #32
|
||||||
\s\smov\s\sr0, r10, lsr r0
|
mov r0, r10, lsr r0
|
||||||
\s\sorr\s\sip, r0, ip, asl r3
|
orr ip, r0, ip, asl r3
|
||||||
\s\sstr\s\sr1, [sp, #12]
|
str r1, [sp, #12]
|
||||||
\s\sstr\s\sip, [sp, #8]
|
str ip, [sp, #8]
|
||||||
\s\sldrd\s\sr10, [sp, #8]
|
ldrd r10, [sp, #8]
|
||||||
\s\sb\s\sL10
|
b L10
|
||||||
L32:
|
L32:
|
||||||
\s\sclz\s\sr2, r1
|
clz r2, r1
|
||||||
\s\sclz\s\sr3, ip
|
clz r3, ip
|
||||||
\s\srsb\s\sr3, r3, r2
|
rsb r3, r3, r2
|
||||||
\s\srsb\s\sr4, r3, #31
|
rsb r4, r3, #31
|
||||||
\s\smov\s\sr2, r0, asl r4
|
mov r2, r0, asl r4
|
||||||
\s\smvn\s\sr1, r3
|
mvn r1, r3
|
||||||
\s\sand\s\sr2, r2, r1, asr #31
|
and r2, r2, r1, asr #31
|
||||||
\s\sadd\s\slr, r3, #33
|
add lr, r3, #33
|
||||||
\s\sstr\s\sr2, [sp, #8]
|
str r2, [sp, #8]
|
||||||
\s\sadd\s\sr2, r3, #1
|
add r2, r3, #1
|
||||||
\s\smov\s\sr3, r3, asr #31
|
mov r3, r3, asr #31
|
||||||
\s\sand\s\sr0, r3, r0, asl r1
|
and r0, r3, r0, asl r1
|
||||||
\s\smov\s\sr3, r10, lsr r2
|
mov r3, r10, lsr r2
|
||||||
\s\sorr\s\sr3, r3, ip, asl r4
|
orr r3, r3, ip, asl r4
|
||||||
\s\sand\s\sr3, r3, r1, asr #31
|
and r3, r3, r1, asr #31
|
||||||
\s\sorr\s\sr0, r0, r3
|
orr r0, r0, r3
|
||||||
\s\smov\s\sr3, ip, lsr lr
|
mov r3, ip, lsr lr
|
||||||
\s\sstr\s\sr0, [sp, #12]
|
str r0, [sp, #12]
|
||||||
\s\smov\s\sr0, r10, lsr lr
|
mov r0, r10, lsr lr
|
||||||
\s\sand\s\sr5, r3, r2, asr #31
|
and r5, r3, r2, asr #31
|
||||||
\s\srsb\s\sr3, lr, #31
|
rsb r3, lr, #31
|
||||||
\s\smov\s\sr3, r3, asr #31
|
mov r3, r3, asr #31
|
||||||
\s\sorr\s\sr0, r0, ip, asl r1
|
orr r0, r0, ip, asl r1
|
||||||
\s\sand\s\sr3, r3, ip, lsr r2
|
and r3, r3, ip, lsr r2
|
||||||
\s\sand\s\sr0, r0, r2, asr #31
|
and r0, r0, r2, asr #31
|
||||||
\s\sorr\s\sr4, r3, r0
|
orr r4, r3, r0
|
||||||
\s\sb\s\sL29
|
b L29
|
||||||
L30:
|
L30:
|
||||||
\s\sclz\s\sr2, r3
|
clz r2, r3
|
||||||
\s\sclz\s\sr3, ip
|
clz r3, ip
|
||||||
\s\srsb\s\sr3, r3, r2
|
rsb r3, r3, r2
|
||||||
\s\scmp\s\sr3, #31
|
cmp r3, #31
|
||||||
\s\sbls\s\sL37
|
bls L37
|
||||||
L48:
|
L48:
|
||||||
\s\scmp\s\sr6, #0
|
cmp r6, #0
|
||||||
\s\sstmneia\s\sr6, {r10-r11}
|
stmneia r6, {r10-r11}
|
||||||
\s\sb\s\sL2
|
b L2
|
||||||
L37:
|
L37:
|
||||||
\s\srsb\s\sr1, r3, #31
|
rsb r1, r3, #31
|
||||||
\s\smov\s\sr0, r0, asl r1
|
mov r0, r0, asl r1
|
||||||
\s\sadd\s\slr, r3, #1
|
add lr, r3, #1
|
||||||
\s\smov\s\sr2, #0
|
mov r2, #0
|
||||||
\s\sstr\s\sr0, [sp, #12]
|
str r0, [sp, #12]
|
||||||
\s\smov\s\sr0, r10, lsr lr
|
mov r0, r10, lsr lr
|
||||||
\s\sstr\s\sr2, [sp, #8]
|
str r2, [sp, #8]
|
||||||
\s\ssub\s\sr2, r3, #31
|
sub r2, r3, #31
|
||||||
\s\sand\s\sr0, r0, r2, asr #31
|
and r0, r0, r2, asr #31
|
||||||
\s\smov\s\sr3, ip, lsr lr
|
mov r3, ip, lsr lr
|
||||||
\s\sorr\s\sr4, r0, ip, asl r1
|
orr r4, r0, ip, asl r1
|
||||||
\s\sand\s\sr5, r3, r2, asr #31
|
and r5, r3, r2, asr #31
|
||||||
L29:
|
L29:
|
||||||
\s\smov\s\sip, #0
|
mov ip, #0
|
||||||
\s\smov\s\sr10, ip
|
mov r10, ip
|
||||||
\s\sb\s\sL40
|
b L40
|
||||||
L41:
|
L41:
|
||||||
\s\sldr\s\sr1, [sp, #12]
|
ldr r1, [sp, #12]
|
||||||
\s\sldr\s\sr2, [sp, #8]
|
ldr r2, [sp, #8]
|
||||||
\s\smov\s\sr3, r4, lsr #31
|
mov r3, r4, lsr #31
|
||||||
\s\sorr\s\sr5, r3, r5, asl #1
|
orr r5, r3, r5, asl #1
|
||||||
\s\smov\s\sr3, r1, lsr #31
|
mov r3, r1, lsr #31
|
||||||
\s\sorr\s\sr4, r3, r4, asl #1
|
orr r4, r3, r4, asl #1
|
||||||
\s\smov\s\sr3, r2, lsr #31
|
mov r3, r2, lsr #31
|
||||||
\s\sorr\s\sr0, r3, r1, asl #1
|
orr r0, r3, r1, asl #1
|
||||||
\s\sorr\s\sr1, ip, r2, asl #1
|
orr r1, ip, r2, asl #1
|
||||||
\s\sldmia\s\ssp, {r2-r3}
|
ldmia sp, {r2-r3}
|
||||||
\s\sstr\s\sr0, [sp, #12]
|
str r0, [sp, #12]
|
||||||
\s\ssubs\s\sr2, r2, r4
|
subs r2, r2, r4
|
||||||
\s\ssbc\s\sr3, r3, r5
|
sbc r3, r3, r5
|
||||||
\s\sstr\s\sr1, [sp, #8]
|
str r1, [sp, #8]
|
||||||
\s\ssubs\s\sr0, r2, #1
|
subs r0, r2, #1
|
||||||
\s\ssbc\s\sr1, r3, #0
|
sbc r1, r3, #0
|
||||||
\s\smov\s\sr2, r1, asr #31
|
mov r2, r1, asr #31
|
||||||
\s\sldmia\s\ssp, {r0-r1}
|
ldmia sp, {r0-r1}
|
||||||
\s\smov\s\sr3, r2
|
mov r3, r2
|
||||||
\s\sand\s\sip, r2, #1
|
and ip, r2, #1
|
||||||
\s\sand\s\sr3, r3, r1
|
and r3, r3, r1
|
||||||
\s\sand\s\sr2, r2, r0
|
and r2, r2, r0
|
||||||
\s\ssubs\s\sr4, r4, r2
|
subs r4, r4, r2
|
||||||
\s\ssbc\s\sr5, r5, r3
|
sbc r5, r5, r3
|
||||||
\s\sadd\s\sr10, r10, #1
|
add r10, r10, #1
|
||||||
L40:
|
L40:
|
||||||
\s\scmp\s\sr10, lr
|
cmp r10, lr
|
||||||
\s\sbne\s\sL41
|
bne L41
|
||||||
\s\sldrd\s\sr0, [sp, #8]
|
ldrd r0, [sp, #8]
|
||||||
\s\sadds\s\sr0, r0, r0
|
adds r0, r0, r0
|
||||||
\s\sadc\s\sr1, r1, r1
|
adc r1, r1, r1
|
||||||
\s\scmp\s\sr6, #0
|
cmp r6, #0
|
||||||
\s\sorr\s\sr10, r0, ip
|
orr r10, r0, ip
|
||||||
\s\smov\s\sr11, r1
|
mov r11, r1
|
||||||
\s\sstmneia\s\sr6, {r4-r5}
|
stmneia r6, {r4-r5}
|
||||||
\s\sb\s\sL10
|
b L10
|
||||||
L2:
|
L2:
|
||||||
\s\smov\s\sr10, #0
|
mov r10, #0
|
||||||
\s\smov\s\sr11, #0
|
mov r11, #0
|
||||||
L10:
|
L10:
|
||||||
\s\smov\s\sr0, r10
|
mov r0, r10
|
||||||
\s\smov\s\sr1, r11
|
mov r1, r11
|
||||||
\s\ssub\s\ssp, r7, #20
|
sub sp, r7, #20
|
||||||
\s\sldmfd\s\ssp!, {r10, r11}
|
ldmfd sp!, {r10, r11}
|
||||||
\s\sldmfd\s\ssp!, {r4, r5, r6, r7, pc}
|
ldmfd sp!, {r4, r5, r6, r7, pc}
|
||||||
|
@ -12,46 +12,46 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__udivsi3)
|
GCC_ASM_EXPORT(__udivsi3)
|
||||||
|
|
||||||
ASM_PFX(__udivsi3):
|
ASM_PFX(__udivsi3):
|
||||||
\s\scmp\s\sr1, #0
|
cmp r1, #0
|
||||||
\s\scmpne\s\sr0, #0
|
cmpne r0, #0
|
||||||
\s\sstmfd\s\ssp!, {r4, r5, r7, lr}
|
stmfd sp!, {r4, r5, r7, lr}
|
||||||
\s\sadd\s\sr7, sp, #8
|
add r7, sp, #8
|
||||||
\s\sbeq\s\sL2
|
beq L2
|
||||||
\s\sclz\s\sr2, r1
|
clz r2, r1
|
||||||
\s\sclz\s\sr3, r0
|
clz r3, r0
|
||||||
\s\srsb\s\sr3, r3, r2
|
rsb r3, r3, r2
|
||||||
\s\scmp\s\sr3, #31
|
cmp r3, #31
|
||||||
\s\sbhi\s\sL2
|
bhi L2
|
||||||
\s\sldmeqfd\s\ssp!, {r4, r5, r7, pc}
|
ldmeqfd sp!, {r4, r5, r7, pc}
|
||||||
\s\sadd\s\sr5, r3, #1
|
add r5, r3, #1
|
||||||
\s\srsb\s\sr3, r3, #31
|
rsb r3, r3, #31
|
||||||
\s\smov\s\slr, #0
|
mov lr, #0
|
||||||
\s\smov\s\sr2, r0, asl r3
|
mov r2, r0, asl r3
|
||||||
\s\smov\s\sip, r0, lsr r5
|
mov ip, r0, lsr r5
|
||||||
\s\smov\s\sr4, lr
|
mov r4, lr
|
||||||
\s\sb\s\sL8
|
b L8
|
||||||
L9:
|
L9:
|
||||||
\s\smov\s\sr0, r2, lsr #31
|
mov r0, r2, lsr #31
|
||||||
\s\sorr\s\sip, r0, ip, asl #1
|
orr ip, r0, ip, asl #1
|
||||||
\s\sorr\s\sr2, r3, lr
|
orr r2, r3, lr
|
||||||
\s\srsb\s\sr3, ip, r1
|
rsb r3, ip, r1
|
||||||
\s\ssub\s\sr3, r3, #1
|
sub r3, r3, #1
|
||||||
\s\sand\s\sr0, r1, r3, asr #31
|
and r0, r1, r3, asr #31
|
||||||
\s\smov\s\slr, r3, lsr #31
|
mov lr, r3, lsr #31
|
||||||
\s\srsb\s\sip, r0, ip
|
rsb ip, r0, ip
|
||||||
\s\sadd\s\sr4, r4, #1
|
add r4, r4, #1
|
||||||
L8:
|
L8:
|
||||||
\s\scmp\s\sr4, r5
|
cmp r4, r5
|
||||||
\s\smov\s\sr3, r2, asl #1
|
mov r3, r2, asl #1
|
||||||
\s\sbne\s\sL9
|
bne L9
|
||||||
\s\sorr\s\sr0, r3, lr
|
orr r0, r3, lr
|
||||||
\s\sldmfd\s\ssp!, {r4, r5, r7, pc}
|
ldmfd sp!, {r4, r5, r7, pc}
|
||||||
L2:
|
L2:
|
||||||
\s\smov\s\sr0, #0
|
mov r0, #0
|
||||||
\s\sldmfd\s\ssp!, {r4, r5, r7, pc}
|
ldmfd sp!, {r4, r5, r7, pc}
|
||||||
|
|
||||||
|
@ -14,9 +14,9 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__aeabi_uldivmod)
|
GCC_ASM_EXPORT(__aeabi_uldivmod)
|
||||||
|
|
||||||
//
|
//
|
||||||
//UINT64
|
//UINT64
|
||||||
|
@ -12,18 +12,18 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__umoddi3)
|
GCC_ASM_EXPORT(__umoddi3)
|
||||||
\s\s
|
|
||||||
ASM_PFX(__umoddi3):
|
ASM_PFX(__umoddi3):
|
||||||
\s\sstmfd\s\ssp!, {r7, lr}
|
stmfd sp!, {r7, lr}
|
||||||
\s\sadd\s\sr7, sp, #0
|
add r7, sp, #0
|
||||||
\s\ssub\s\ssp, sp, #16
|
sub sp, sp, #16
|
||||||
\s\sadd\s\sip, sp, #8
|
add ip, sp, #8
|
||||||
\s\sstr\s\sip, [sp, #0]
|
str ip, [sp, #0]
|
||||||
\s\sbl\s\sASM_PFX(__udivmoddi4)
|
bl ASM_PFX(__udivmoddi4)
|
||||||
\s\sldrd\s\sr0, [sp, #8]
|
ldrd r0, [sp, #8]
|
||||||
\s\ssub\s\ssp, r7, #0
|
sub sp, r7, #0
|
||||||
\s\sldmfd\s\ssp!, {r7, pc}
|
ldmfd sp!, {r7, pc}
|
||||||
|
|
||||||
|
@ -12,17 +12,17 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
\s\s.text
|
.text
|
||||||
\s\s.align 2
|
.align 2
|
||||||
\s\sGCC_ASM_EXPORT(__umodsi3)
|
GCC_ASM_EXPORT(__umodsi3)
|
||||||
\s\s
|
|
||||||
ASM_PFX(__umodsi3):
|
ASM_PFX(__umodsi3):
|
||||||
\s\sstmfd\s\ssp!, {r4, r5, r7, lr}
|
stmfd sp!, {r4, r5, r7, lr}
|
||||||
\s\sadd\s\sr7, sp, #8
|
add r7, sp, #8
|
||||||
\s\smov\s\sr5, r0
|
mov r5, r0
|
||||||
\s\smov\s\sr4, r1
|
mov r4, r1
|
||||||
\s\sbl \s\sASM_PFX(__udivsi3)
|
bl ASM_PFX(__udivsi3)
|
||||||
\s\smul\s\sr0, r4, r0
|
mul r0, r4, r0
|
||||||
\s\srsb\s\sr0, r0, r5
|
rsb r0, r0, r5
|
||||||
\s\sldmfd\s\ssp!, {r4, r5, r7, pc}
|
ldmfd sp!, {r4, r5, r7, pc}
|
||||||
|
|
||||||
|
@ -30,12 +30,12 @@
|
|||||||
|
|
||||||
#define MMC_OCR_POWERUP 0x80000000
|
#define MMC_OCR_POWERUP 0x80000000
|
||||||
|
|
||||||
#define MMC_CSD_GET_CCC(Response)\s\s\s\s(Response[1] >> 20)
|
#define MMC_CSD_GET_CCC(Response) (Response[1] >> 20)
|
||||||
#define MMC_CSD_GET_TRANSPEED(Response)\s\s\s\s(Response[0] & 0xFF)
|
#define MMC_CSD_GET_TRANSPEED(Response) (Response[0] & 0xFF)
|
||||||
#define MMC_CSD_GET_READBLLEN(Response)\s\s\s\s((Response[1] >> 16) & 0xF)
|
#define MMC_CSD_GET_READBLLEN(Response) ((Response[1] >> 16) & 0xF)
|
||||||
#define MMC_CSD_GET_WRITEBLLEN(Response)\s\s((Response[3] >> 22) & 0xF)
|
#define MMC_CSD_GET_WRITEBLLEN(Response) ((Response[3] >> 22) & 0xF)
|
||||||
#define MMC_CSD_GET_FILEFORMAT(Response)\s\s((Response[3] >> 10) & 0x3)
|
#define MMC_CSD_GET_FILEFORMAT(Response) ((Response[3] >> 10) & 0x3)
|
||||||
#define MMC_CSD_GET_FILEFORMATGRP(Response)\s\s((Response[3] >> 15) & 0x1)
|
#define MMC_CSD_GET_FILEFORMATGRP(Response) ((Response[3] >> 15) & 0x1)
|
||||||
#define MMC_CSD_GET_DEVICESIZE(csd) (((Response[2] >> 30) & 0x3) | ((Response[1] & 0x3FF) << 2))
|
#define MMC_CSD_GET_DEVICESIZE(csd) (((Response[2] >> 30) & 0x3) | ((Response[1] & 0x3FF) << 2))
|
||||||
#define MMC_CSD_GET_DEVICESIZEMULT(csd) ((Response[2] >> 15) & 0x7)
|
#define MMC_CSD_GET_DEVICESIZEMULT(csd) ((Response[2] >> 15) & 0x7)
|
||||||
|
|
||||||
|
@ -94,20 +94,20 @@ Abstract:
|
|||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINTN tv_sec; /* seconds */
|
UINTN tv_sec; /* seconds */
|
||||||
UINTN tv_nsec; /* and nanoseconds */
|
UINTN tv_nsec; /* and nanoseconds */
|
||||||
} EFI_timespec;
|
} EFI_timespec;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct stat_fix { \
|
typedef struct stat_fix { \
|
||||||
dev_t st_dev; /* [XSI] ID of device containing file */
|
dev_t st_dev; /* [XSI] ID of device containing file */
|
||||||
mode_t st_mode; /* [XSI] Mode of file (see below) */
|
mode_t st_mode; /* [XSI] Mode of file (see below) */
|
||||||
nlink_t st_nlink; /* [XSI] Number of hard links */
|
nlink_t st_nlink; /* [XSI] Number of hard links */
|
||||||
__darwin_ino64_t st_ino; /* [XSI] File serial number */
|
__darwin_ino64_t st_ino; /* [XSI] File serial number */
|
||||||
uid_t st_uid; /* [XSI] User ID of the file */
|
uid_t st_uid; /* [XSI] User ID of the file */
|
||||||
gid_t st_gid; /* [XSI] Group ID of the file */
|
gid_t st_gid; /* [XSI] Group ID of the file */
|
||||||
dev_t st_rdev; /* [XSI] Device ID */
|
dev_t st_rdev; /* [XSI] Device ID */
|
||||||
|
|
||||||
// clang for X64 ABI follows Windows and a long is 32-bits
|
// clang for X64 ABI follows Windows and a long is 32-bits
|
||||||
// this breaks system inlcude files so that is why we need
|
// this breaks system inlcude files so that is why we need
|
||||||
@ -117,44 +117,44 @@ typedef struct stat_fix { \
|
|||||||
EFI_timespec st_ctimespec;
|
EFI_timespec st_ctimespec;
|
||||||
EFI_timespec st_birthtimespec;
|
EFI_timespec st_birthtimespec;
|
||||||
|
|
||||||
off_t st_size; /* [XSI] file size, in bytes */
|
off_t st_size; /* [XSI] file size, in bytes */
|
||||||
blkcnt_t st_blocks; /* [XSI] blocks allocated for file */
|
blkcnt_t st_blocks; /* [XSI] blocks allocated for file */
|
||||||
blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */
|
blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */
|
||||||
__uint32_t st_flags; /* user defined flags for file */
|
__uint32_t st_flags; /* user defined flags for file */
|
||||||
__uint32_t st_gen; /* file generation number */
|
__uint32_t st_gen; /* file generation number */
|
||||||
__int32_t st_lspare; /* RESERVED: DO NOT USE! */
|
__int32_t st_lspare; /* RESERVED: DO NOT USE! */
|
||||||
__int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */
|
__int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */
|
||||||
} STAT_FIX;
|
} STAT_FIX;
|
||||||
|
|
||||||
#else /* !__DARWIN_64_BIT_INO_T */
|
#else /* !__DARWIN_64_BIT_INO_T */
|
||||||
|
|
||||||
typedef struct stat_fix {
|
typedef struct stat_fix {
|
||||||
dev_t st_dev; /* [XSI] ID of device containing file */
|
dev_t st_dev; /* [XSI] ID of device containing file */
|
||||||
ino_t st_ino; /* [XSI] File serial number */
|
ino_t st_ino; /* [XSI] File serial number */
|
||||||
mode_t st_mode; /* [XSI] Mode of file (see below) */
|
mode_t st_mode; /* [XSI] Mode of file (see below) */
|
||||||
nlink_t st_nlink; /* [XSI] Number of hard links */
|
nlink_t st_nlink; /* [XSI] Number of hard links */
|
||||||
uid_t st_uid; /* [XSI] User ID of the file */
|
uid_t st_uid; /* [XSI] User ID of the file */
|
||||||
gid_t st_gid; /* [XSI] Group ID of the file */
|
gid_t st_gid; /* [XSI] Group ID of the file */
|
||||||
dev_t st_rdev; /* [XSI] Device ID */
|
dev_t st_rdev; /* [XSI] Device ID */
|
||||||
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
|
||||||
struct timespec st_atimespec; /* time of last access */
|
struct timespec st_atimespec; /* time of last access */
|
||||||
struct timespec st_mtimespec; /* time of last data modification */
|
struct timespec st_mtimespec; /* time of last data modification */
|
||||||
struct timespec st_ctimespec; /* time of last status change */
|
struct timespec st_ctimespec; /* time of last status change */
|
||||||
#else
|
#else
|
||||||
time_t st_atime; /* [XSI] Time of last access */
|
time_t st_atime; /* [XSI] Time of last access */
|
||||||
long st_atimensec; /* nsec of last access */
|
long st_atimensec; /* nsec of last access */
|
||||||
time_t st_mtime; /* [XSI] Last data modification time */
|
time_t st_mtime; /* [XSI] Last data modification time */
|
||||||
long st_mtimensec; /* last data modification nsec */
|
long st_mtimensec; /* last data modification nsec */
|
||||||
time_t st_ctime; /* [XSI] Time of last status change */
|
time_t st_ctime; /* [XSI] Time of last status change */
|
||||||
long st_ctimensec; /* nsec of last status change */
|
long st_ctimensec; /* nsec of last status change */
|
||||||
#endif
|
#endif
|
||||||
off_t st_size; /* [XSI] file size, in bytes */
|
off_t st_size; /* [XSI] file size, in bytes */
|
||||||
blkcnt_t st_blocks; /* [XSI] blocks allocated for file */
|
blkcnt_t st_blocks; /* [XSI] blocks allocated for file */
|
||||||
blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */
|
blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */
|
||||||
__uint32_t st_flags; /* user defined flags for file */
|
__uint32_t st_flags; /* user defined flags for file */
|
||||||
__uint32_t st_gen; /* file generation number */
|
__uint32_t st_gen; /* file generation number */
|
||||||
__int32_t st_lspare; /* RESERVED: DO NOT USE! */
|
__int32_t st_lspare; /* RESERVED: DO NOT USE! */
|
||||||
__int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */
|
__int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */
|
||||||
} STAT_FIX;
|
} STAT_FIX;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -192,7 +192,7 @@ struct _EFI_UNIX_UGA_IO_PROTOCOL;
|
|||||||
typedef
|
typedef
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
(EFIAPI *UnixUgaCreate)(struct _EFI_UNIX_UGA_IO_PROTOCOL **UgaIo,
|
(EFIAPI *UnixUgaCreate)(struct _EFI_UNIX_UGA_IO_PROTOCOL **UgaIo,
|
||||||
CONST CHAR16 *Title);
|
CONST CHAR16 *Title);
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
int
|
int
|
||||||
@ -229,7 +229,7 @@ int
|
|||||||
typedef
|
typedef
|
||||||
int
|
int
|
||||||
(EFIAPI *UnixTcsetattr) (int __fd, int __optional_actions,
|
(EFIAPI *UnixTcsetattr) (int __fd, int __optional_actions,
|
||||||
__const struct termios *__termios_p);
|
__const struct termios *__termios_p);
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -292,13 +292,13 @@ typedef struct _EFI_UNIX_THUNK_PROTOCOL {
|
|||||||
UINT64 Signature;
|
UINT64 Signature;
|
||||||
|
|
||||||
UnixSleep Sleep;
|
UnixSleep Sleep;
|
||||||
UnixExit Exit;
|
UnixExit Exit;
|
||||||
UnixSetTimer SetTimer;
|
UnixSetTimer SetTimer;
|
||||||
UnixGetLocalTime GetLocalTime;
|
UnixGetLocalTime GetLocalTime;
|
||||||
UnixGmTime GmTime;
|
UnixGmTime GmTime;
|
||||||
UnixGetTimeZone GetTimeZone;
|
UnixGetTimeZone GetTimeZone;
|
||||||
UnixGetDayLight GetDayLight;
|
UnixGetDayLight GetDayLight;
|
||||||
UnixPoll Poll;
|
UnixPoll Poll;
|
||||||
UnixRead Read;
|
UnixRead Read;
|
||||||
UnixWrite Write;
|
UnixWrite Write;
|
||||||
UnixGetenv Getenv;
|
UnixGetenv Getenv;
|
||||||
@ -322,7 +322,7 @@ typedef struct _EFI_UNIX_THUNK_PROTOCOL {
|
|||||||
UnixChmod Chmod;
|
UnixChmod Chmod;
|
||||||
UnixUTime UTime;
|
UnixUTime UTime;
|
||||||
UnixTcflush Tcflush;
|
UnixTcflush Tcflush;
|
||||||
UnixUgaCreate UgaCreate;
|
UnixUgaCreate UgaCreate;
|
||||||
UnixPerror Perror;
|
UnixPerror Perror;
|
||||||
UnixIoCtl IoCtl;
|
UnixIoCtl IoCtl;
|
||||||
UnixFcntl Fcntl;
|
UnixFcntl Fcntl;
|
||||||
|
@ -81,23 +81,23 @@ EFI_STATUS
|
|||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINTN SourceX;
|
UINTN SourceX;
|
||||||
UINTN SourceY;
|
UINTN SourceY;
|
||||||
UINTN DestinationX;
|
UINTN DestinationX;
|
||||||
UINTN DestinationY;
|
UINTN DestinationY;
|
||||||
UINTN Width;
|
UINTN Width;
|
||||||
UINTN Height;
|
UINTN Height;
|
||||||
UINTN Delta;
|
UINTN Delta;
|
||||||
} UGA_BLT_ARGS;
|
} UGA_BLT_ARGS;
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
(EFIAPI *UGABlt)(
|
(EFIAPI *UGABlt)(
|
||||||
IN EFI_UNIX_UGA_IO_PROTOCOL *Uga,
|
IN EFI_UNIX_UGA_IO_PROTOCOL *Uga,
|
||||||
IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
|
IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
|
||||||
IN EFI_UGA_BLT_OPERATION BltOperation,
|
IN EFI_UGA_BLT_OPERATION BltOperation,
|
||||||
IN UGA_BLT_ARGS *Args
|
IN UGA_BLT_ARGS *Args
|
||||||
);
|
);
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
@ -134,7 +134,7 @@ OemHookStatusCodeReport (
|
|||||||
mStdOut,
|
mStdOut,
|
||||||
Buffer,
|
Buffer,
|
||||||
CharCount
|
CharCount
|
||||||
);
|
);
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ DxeUnixPeCoffLibExtraActionConstructor (
|
|||||||
IN EFI_SYSTEM_TABLE *SystemTable
|
IN EFI_SYSTEM_TABLE *SystemTable
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_HOB_GUID_TYPE *GuidHob;
|
EFI_HOB_GUID_TYPE *GuidHob;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Retrieve UnixThunkProtocol from GUID'ed HOB
|
// Retrieve UnixThunkProtocol from GUID'ed HOB
|
||||||
|
@ -55,7 +55,7 @@ Returns:
|
|||||||
|
|
||||||
--*/
|
--*/
|
||||||
{
|
{
|
||||||
PEI_UNIX_THUNK_PPI *UnixThunkPpi;
|
PEI_UNIX_THUNK_PPI *UnixThunkPpi;
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_UNIX_THUNK_PROTOCOL *Unix;
|
EFI_UNIX_THUNK_PROTOCOL *Unix;
|
||||||
|
|
||||||
|
@ -142,7 +142,7 @@ OemHookStatusCodeReport (
|
|||||||
mStdOut,
|
mStdOut,
|
||||||
Buffer,
|
Buffer,
|
||||||
CharCount
|
CharCount
|
||||||
);
|
);
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ EFIAPI
|
|||||||
UnixPeCoffGetUnixThunkStucture (
|
UnixPeCoffGetUnixThunkStucture (
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
PEI_UNIX_THUNK_PPI *UnixThunkPpi;
|
PEI_UNIX_THUNK_PPI *UnixThunkPpi;
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
|
||||||
|
|
||||||
|
@ -398,7 +398,7 @@ GasketUgaBlt (
|
|||||||
EFI_UNIX_UGA_IO_PROTOCOL *UgaIo,
|
EFI_UNIX_UGA_IO_PROTOCOL *UgaIo,
|
||||||
IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
|
IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
|
||||||
IN EFI_UGA_BLT_OPERATION BltOperation,
|
IN EFI_UGA_BLT_OPERATION BltOperation,
|
||||||
IN UGA_BLT_ARGS *Args
|
IN UGA_BLT_ARGS *Args
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return GasketUintnUintnUintnUintn (UgaBlt, (UINTN)UgaIo, (UINTN)BltBuffer, (UINTN)BltOperation, (UINTN)Args);
|
return GasketUintnUintnUintnUintn (UgaBlt, (UINTN)UgaIo, (UINTN)BltBuffer, (UINTN)BltOperation, (UINTN)Args);
|
||||||
|
@ -264,21 +264,21 @@ _GasketUintnUint16:
|
|||||||
|
|
||||||
.globl _ReverseGasketUint64
|
.globl _ReverseGasketUint64
|
||||||
_ReverseGasketUint64:
|
_ReverseGasketUint64:
|
||||||
pushl %ebp
|
pushl %ebp
|
||||||
movl %esp, %ebp
|
movl %esp, %ebp
|
||||||
subl $40, %esp
|
subl $40, %esp
|
||||||
movl 12(%ebp), %eax
|
movl 12(%ebp), %eax
|
||||||
movl %eax, -16(%ebp)
|
movl %eax, -16(%ebp)
|
||||||
movl 16(%ebp), %eax
|
movl 16(%ebp), %eax
|
||||||
movl %eax, -12(%ebp)
|
movl %eax, -12(%ebp)
|
||||||
movl -16(%ebp), %eax
|
movl -16(%ebp), %eax
|
||||||
movl -12(%ebp), %edx
|
movl -12(%ebp), %edx
|
||||||
movl %eax, (%esp)
|
movl %eax, (%esp)
|
||||||
movl %edx, 4(%esp)
|
movl %edx, 4(%esp)
|
||||||
movl 8(%ebp), %eax
|
movl 8(%ebp), %eax
|
||||||
call *%eax
|
call *%eax
|
||||||
leave
|
leave
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
.globl _ReverseGasketUint64Uint64
|
.globl _ReverseGasketUint64Uint64
|
||||||
@ -314,31 +314,31 @@ _ReverseGasketUint64Uint64:
|
|||||||
|
|
||||||
.globl _GasketSecUnixPeiLoadFile
|
.globl _GasketSecUnixPeiLoadFile
|
||||||
_GasketSecUnixPeiLoadFile:
|
_GasketSecUnixPeiLoadFile:
|
||||||
jmp _SecUnixPeiLoadFile
|
jmp _SecUnixPeiLoadFile
|
||||||
|
|
||||||
|
|
||||||
.globl _GasketSecUnixPeiAutoScan
|
.globl _GasketSecUnixPeiAutoScan
|
||||||
_GasketSecUnixPeiAutoScan:
|
_GasketSecUnixPeiAutoScan:
|
||||||
jmp _SecUnixPeiAutoScan
|
jmp _SecUnixPeiAutoScan
|
||||||
|
|
||||||
|
|
||||||
.globl _GasketSecUnixUnixThunkAddress
|
.globl _GasketSecUnixUnixThunkAddress
|
||||||
_GasketSecUnixUnixThunkAddress:
|
_GasketSecUnixUnixThunkAddress:
|
||||||
jmp _SecUnixUnixThunkAddress
|
jmp _SecUnixUnixThunkAddress
|
||||||
|
|
||||||
|
|
||||||
.globl _GasketSecPeiReportStatusCode
|
.globl _GasketSecPeiReportStatusCode
|
||||||
_GasketSecPeiReportStatusCode:
|
_GasketSecPeiReportStatusCode:
|
||||||
jmp _SecPeiReportStatusCode
|
jmp _SecPeiReportStatusCode
|
||||||
|
|
||||||
|
|
||||||
.globl _GasketSecUnixFdAddress
|
.globl _GasketSecUnixFdAddress
|
||||||
_GasketSecUnixFdAddress:
|
_GasketSecUnixFdAddress:
|
||||||
jmp _SecUnixFdAddress
|
jmp _SecUnixFdAddress
|
||||||
|
|
||||||
|
|
||||||
.globl _GasketSecTemporaryRamSupport
|
.globl _GasketSecTemporaryRamSupport
|
||||||
_GasketSecTemporaryRamSupport:
|
_GasketSecTemporaryRamSupport:
|
||||||
jmp _SecTemporaryRamSupport
|
jmp _SecTemporaryRamSupport
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -279,17 +279,17 @@ Returns:
|
|||||||
// Open the FD and remmeber where it got mapped into our processes address space
|
// Open the FD and remmeber where it got mapped into our processes address space
|
||||||
//
|
//
|
||||||
Status = MapFile (
|
Status = MapFile (
|
||||||
FileName,
|
FileName,
|
||||||
&gFdInfo[Index].Address,
|
&gFdInfo[Index].Address,
|
||||||
&gFdInfo[Index].Size
|
&gFdInfo[Index].Size
|
||||||
);
|
);
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
printf ("ERROR : Can not open Firmware Device File %s (%x). Exiting.\n", FileName, (unsigned int)Status);
|
printf ("ERROR : Can not open Firmware Device File %s (%x). Exiting.\n", FileName, (unsigned int)Status);
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf (" FD loaded from %s at 0x%08lx",
|
printf (" FD loaded from %s at 0x%08lx",
|
||||||
FileName, (unsigned long)gFdInfo[Index].Address);
|
FileName, (unsigned long)gFdInfo[Index].Address);
|
||||||
|
|
||||||
if (PeiCoreFile == NULL) {
|
if (PeiCoreFile == NULL) {
|
||||||
//
|
//
|
||||||
@ -419,10 +419,10 @@ Returns:
|
|||||||
/* Read entry address. */
|
/* Read entry address. */
|
||||||
lseek (fd, FileSize - 0x20, SEEK_SET);
|
lseek (fd, FileSize - 0x20, SEEK_SET);
|
||||||
if (read (fd, &EntryAddress, 4) != 4)
|
if (read (fd, &EntryAddress, 4) != 4)
|
||||||
{
|
{
|
||||||
close (fd);
|
close (fd);
|
||||||
return EFI_DEVICE_ERROR;
|
return EFI_DEVICE_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -664,8 +664,8 @@ Returns:
|
|||||||
|
|
||||||
*MemoryBase = 0;
|
*MemoryBase = 0;
|
||||||
res = MapMemory(0, gSystemMemory[Index].Size,
|
res = MapMemory(0, gSystemMemory[Index].Size,
|
||||||
PROT_READ | PROT_WRITE | PROT_EXEC,
|
PROT_READ | PROT_WRITE | PROT_EXEC,
|
||||||
MAP_PRIVATE | MAP_ANONYMOUS);
|
MAP_PRIVATE | MAP_ANONYMOUS);
|
||||||
if (res == MAP_FAILED)
|
if (res == MAP_FAILED)
|
||||||
return EFI_DEVICE_ERROR;
|
return EFI_DEVICE_ERROR;
|
||||||
*MemorySize = gSystemMemory[Index].Size;
|
*MemorySize = gSystemMemory[Index].Size;
|
||||||
|
@ -59,7 +59,7 @@ typedef struct {
|
|||||||
EFI_UNIX_UGA_IO_PROTOCOL UgaIo;
|
EFI_UNIX_UGA_IO_PROTOCOL UgaIo;
|
||||||
|
|
||||||
Display *display;
|
Display *display;
|
||||||
int screen; /* values for window_size in main */
|
int screen; /* values for window_size in main */
|
||||||
Window win;
|
Window win;
|
||||||
GC gc;
|
GC gc;
|
||||||
Visual *visual;
|
Visual *visual;
|
||||||
@ -393,15 +393,15 @@ handleMouseMoved(UGA_IO_PRIVATE *drv, XEvent *ev)
|
|||||||
if ( ev->xmotion.x != drv->previous_x )
|
if ( ev->xmotion.x != drv->previous_x )
|
||||||
{
|
{
|
||||||
drv->pointer_state.RelativeMovementX += ( ev->xmotion.x - drv->previous_x );
|
drv->pointer_state.RelativeMovementX += ( ev->xmotion.x - drv->previous_x );
|
||||||
drv->previous_x = ev->xmotion.x;
|
drv->previous_x = ev->xmotion.x;
|
||||||
drv->pointer_state_changed = 1;
|
drv->pointer_state_changed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ev->xmotion.y != drv->previous_y )
|
if ( ev->xmotion.y != drv->previous_y )
|
||||||
{
|
{
|
||||||
drv->pointer_state.RelativeMovementY += ( ev->xmotion.y - drv->previous_y );
|
drv->pointer_state.RelativeMovementY += ( ev->xmotion.y - drv->previous_y );
|
||||||
drv->previous_y = ev->xmotion.y;
|
drv->previous_y = ev->xmotion.y;
|
||||||
drv->pointer_state_changed = 1;
|
drv->pointer_state_changed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
drv->pointer_state.RelativeMovementZ = 0;
|
drv->pointer_state.RelativeMovementZ = 0;
|
||||||
@ -413,12 +413,12 @@ handleMouseDown(UGA_IO_PRIVATE *drv, XEvent *ev, BOOLEAN Pressed)
|
|||||||
if ( ev->xbutton.button == Button1 )
|
if ( ev->xbutton.button == Button1 )
|
||||||
{
|
{
|
||||||
drv->pointer_state_changed = ( drv->pointer_state.LeftButton != Pressed );
|
drv->pointer_state_changed = ( drv->pointer_state.LeftButton != Pressed );
|
||||||
drv->pointer_state.LeftButton = Pressed;
|
drv->pointer_state.LeftButton = Pressed;
|
||||||
}
|
}
|
||||||
if ( ev->xbutton.button == Button2 )
|
if ( ev->xbutton.button == Button2 )
|
||||||
{
|
{
|
||||||
drv->pointer_state_changed = ( drv->pointer_state.RightButton != Pressed );
|
drv->pointer_state_changed = ( drv->pointer_state.RightButton != Pressed );
|
||||||
drv->pointer_state.RightButton = Pressed;
|
drv->pointer_state.RightButton = Pressed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -460,10 +460,10 @@ HandleEvent(UGA_IO_PRIVATE *drv, XEvent *ev)
|
|||||||
break;
|
break;
|
||||||
case ButtonPress:
|
case ButtonPress:
|
||||||
handleMouseDown(drv, ev, TRUE);
|
handleMouseDown(drv, ev, TRUE);
|
||||||
break;
|
break;
|
||||||
case ButtonRelease:
|
case ButtonRelease:
|
||||||
handleMouseDown(drv, ev, FALSE);
|
handleMouseDown(drv, ev, FALSE);
|
||||||
break;
|
break;
|
||||||
#if 0
|
#if 0
|
||||||
case DestroyNotify:
|
case DestroyNotify:
|
||||||
XCloseDisplay (drv->display);
|
XCloseDisplay (drv->display);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -39,8 +39,8 @@
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
ASM_GLOBAL ASM_PFX(PeiSwitchStacks)
|
ASM_GLOBAL ASM_PFX(PeiSwitchStacks)
|
||||||
ASM_PFX(PeiSwitchStacks):
|
ASM_PFX(PeiSwitchStacks):
|
||||||
pushq %rbp // stack frame is for the debugger
|
pushq %rbp // stack frame is for the debugger
|
||||||
movq %rsp, %rbp
|
movq %rsp, %rbp
|
||||||
|
|
||||||
movq %r8, %rsp
|
movq %r8, %rsp
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ ASM_PFX(PeiSwitchStacks):
|
|||||||
# Reserve space for register parameters (rcx, rdx, r8 & r9) on the stack,
|
# Reserve space for register parameters (rcx, rdx, r8 & r9) on the stack,
|
||||||
# in case the callee wishes to spill them.
|
# in case the callee wishes to spill them.
|
||||||
#
|
#
|
||||||
subq $32, %rsp // 32-byte shadow space plus alignment pad
|
subq $32, %rsp // 32-byte shadow space plus alignment pad
|
||||||
call *%rax
|
call *%rax
|
||||||
|
|
||||||
|
|
||||||
@ -76,8 +76,8 @@ ASM_PFX(PeiSwitchStacks):
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
ASM_GLOBAL ASM_PFX(UnixPeiSwitchStacks)
|
ASM_GLOBAL ASM_PFX(UnixPeiSwitchStacks)
|
||||||
ASM_PFX(UnixPeiSwitchStacks):
|
ASM_PFX(UnixPeiSwitchStacks):
|
||||||
pushq %rbp // stack frame is for the debugger
|
pushq %rbp // stack frame is for the debugger
|
||||||
movq %rsp, %rbp
|
movq %rsp, %rbp
|
||||||
|
|
||||||
mov %rdi, %rax
|
mov %rdi, %rax
|
||||||
mov %rsi, %rdi
|
mov %rsi, %rdi
|
||||||
@ -105,7 +105,7 @@ ASM_PFX(UnixPeiSwitchStacks):
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
ASM_GLOBAL ASM_PFX(SecSwitchStack)
|
ASM_GLOBAL ASM_PFX(SecSwitchStack)
|
||||||
ASM_PFX(SecSwitchStack):
|
ASM_PFX(SecSwitchStack):
|
||||||
pushq %rbp // stack frame is for the debugger
|
pushq %rbp // stack frame is for the debugger
|
||||||
movq %rsp, %rbp
|
movq %rsp, %rbp
|
||||||
|
|
||||||
mov %rsp, %rax
|
mov %rsp, %rax
|
||||||
|
@ -227,7 +227,7 @@ Returns:
|
|||||||
//
|
//
|
||||||
if (TimerPeriod == 0
|
if (TimerPeriod == 0
|
||||||
|| ((TimerPeriod > TIMER_MINIMUM_VALUE)
|
|| ((TimerPeriod > TIMER_MINIMUM_VALUE)
|
||||||
&& (TimerPeriod < TIMER_MAXIMUM_VALUE))) {
|
&& (TimerPeriod < TIMER_MAXIMUM_VALUE))) {
|
||||||
mTimerPeriodMs = DivU64x32 (TimerPeriod + 5000, 10000);
|
mTimerPeriodMs = DivU64x32 (TimerPeriod + 5000, 10000);
|
||||||
|
|
||||||
gUnix->SetTimer (mTimerPeriodMs, TimerCallback);
|
gUnix->SetTimer (mTimerPeriodMs, TimerCallback);
|
||||||
|
@ -149,7 +149,7 @@ UnixBlockIoDriverDiagnosticsRunDiagnostics (
|
|||||||
*ErrorType = &gEfiBlockIoProtocolGuid;
|
*ErrorType = &gEfiBlockIoProtocolGuid;
|
||||||
*BufferSize = 0x60;
|
*BufferSize = 0x60;
|
||||||
gBS->AllocatePool (EfiBootServicesData, (UINTN) (*BufferSize),
|
gBS->AllocatePool (EfiBootServicesData, (UINTN) (*BufferSize),
|
||||||
(void *)Buffer);
|
(void *)Buffer);
|
||||||
CopyMem (*Buffer, L"Unix Block I/O Driver Diagnostics Failed\n", *BufferSize);
|
CopyMem (*Buffer, L"Unix Block I/O Driver Diagnostics Failed\n", *BufferSize);
|
||||||
return EFI_DEVICE_ERROR;
|
return EFI_DEVICE_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -410,7 +410,7 @@ Returns:
|
|||||||
BOOLEAN WriteProtected;
|
BOOLEAN WriteProtected;
|
||||||
UINTN NumberOfBlocks;
|
UINTN NumberOfBlocks;
|
||||||
UINTN BlockSize;
|
UINTN BlockSize;
|
||||||
INTN i;
|
INTN i;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Grab the protocols we need
|
// Grab the protocols we need
|
||||||
|
@ -468,7 +468,7 @@ Returns:
|
|||||||
|
|
||||||
UnixDevice->ControllerNameTable = NULL;
|
UnixDevice->ControllerNameTable = NULL;
|
||||||
|
|
||||||
// FIXME: check size
|
// FIXME: check size
|
||||||
StrCpy(ComponentName, UnixDevice->UnixIo.EnvString);
|
StrCpy(ComponentName, UnixDevice->UnixIo.EnvString);
|
||||||
|
|
||||||
UnixDevice->DevicePath = UnixBusCreateDevicePath (
|
UnixDevice->DevicePath = UnixBusCreateDevicePath (
|
||||||
|
@ -191,10 +191,10 @@ extern EFI_COMPONENT_NAME_PROTOCOL gUnixSerialIoComponentName;
|
|||||||
#define __MAX_BAUD B4000000
|
#define __MAX_BAUD B4000000
|
||||||
#endif
|
#endif
|
||||||
#ifndef CMSPAR
|
#ifndef CMSPAR
|
||||||
#define CMSPAR 010000000000 /* mark or space (stick) parity */
|
#define CMSPAR 010000000000 /* mark or space (stick) parity */
|
||||||
#endif
|
#endif
|
||||||
#ifndef FIONREAD
|
#ifndef FIONREAD
|
||||||
#define FIONREAD 0x541B
|
#define FIONREAD 0x541B
|
||||||
#endif
|
#endif
|
||||||
//
|
//
|
||||||
// Function Prototypes
|
// Function Prototypes
|
||||||
|
@ -350,9 +350,9 @@ Done:
|
|||||||
if (Private != NULL) {
|
if (Private != NULL) {
|
||||||
|
|
||||||
if (Private->VolumeLabel != NULL)
|
if (Private->VolumeLabel != NULL)
|
||||||
gBS->FreePool (Private->VolumeLabel);
|
gBS->FreePool (Private->VolumeLabel);
|
||||||
if (Private->FilePath != NULL)
|
if (Private->FilePath != NULL)
|
||||||
gBS->FreePool (Private->FilePath);
|
gBS->FreePool (Private->FilePath);
|
||||||
FreeUnicodeStringTable (Private->ControllerNameTable);
|
FreeUnicodeStringTable (Private->ControllerNameTable);
|
||||||
|
|
||||||
gBS->FreePool (Private);
|
gBS->FreePool (Private);
|
||||||
@ -862,7 +862,7 @@ OpenRoot:
|
|||||||
// Create a directory
|
// Create a directory
|
||||||
//
|
//
|
||||||
if (NewPrivateFile->UnixThunk->MkDir (NewPrivateFile->FileName, 0777) != 0) {
|
if (NewPrivateFile->UnixThunk->MkDir (NewPrivateFile->FileName, 0777) != 0) {
|
||||||
INTN LastError;
|
INTN LastError;
|
||||||
|
|
||||||
LastError = PrivateFile->UnixThunk->GetErrno ();
|
LastError = PrivateFile->UnixThunk->GetErrno ();
|
||||||
if (LastError != EEXIST) {
|
if (LastError != EEXIST) {
|
||||||
@ -897,9 +897,9 @@ OpenRoot:
|
|||||||
0666);
|
0666);
|
||||||
if (NewPrivateFile->fd < 0) {
|
if (NewPrivateFile->fd < 0) {
|
||||||
if (PrivateFile->UnixThunk->GetErrno () == ENOENT) {
|
if (PrivateFile->UnixThunk->GetErrno () == ENOENT) {
|
||||||
Status = EFI_NOT_FOUND;
|
Status = EFI_NOT_FOUND;
|
||||||
} else {
|
} else {
|
||||||
Status = EFI_ACCESS_DENIED;
|
Status = EFI_ACCESS_DENIED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1184,7 +1184,7 @@ Returns:
|
|||||||
}
|
}
|
||||||
if (PrivateFile->UnixThunk->Stat (
|
if (PrivateFile->UnixThunk->Stat (
|
||||||
FileName == NULL ? PrivateFile->FileName : FileName,
|
FileName == NULL ? PrivateFile->FileName : FileName,
|
||||||
&buf) < 0)
|
&buf) < 0)
|
||||||
return EFI_DEVICE_ERROR;
|
return EFI_DEVICE_ERROR;
|
||||||
|
|
||||||
Status = EFI_SUCCESS;
|
Status = EFI_SUCCESS;
|
||||||
@ -1285,9 +1285,9 @@ Returns:
|
|||||||
}
|
}
|
||||||
|
|
||||||
Res = PrivateFile->UnixThunk->Read (
|
Res = PrivateFile->UnixThunk->Read (
|
||||||
PrivateFile->fd,
|
PrivateFile->fd,
|
||||||
Buffer,
|
Buffer,
|
||||||
*BufferSize);
|
*BufferSize);
|
||||||
if (Res < 0) {
|
if (Res < 0) {
|
||||||
Status = EFI_DEVICE_ERROR;
|
Status = EFI_DEVICE_ERROR;
|
||||||
goto Done;
|
goto Done;
|
||||||
@ -1341,9 +1341,9 @@ Returns:
|
|||||||
AsciiStrCat(FullFileName, "/");
|
AsciiStrCat(FullFileName, "/");
|
||||||
AsciiStrCat(FullFileName, PrivateFile->Dirent->d_name);
|
AsciiStrCat(FullFileName, PrivateFile->Dirent->d_name);
|
||||||
Status = UnixSimpleFileSystemFileInfo (PrivateFile,
|
Status = UnixSimpleFileSystemFileInfo (PrivateFile,
|
||||||
FullFileName,
|
FullFileName,
|
||||||
BufferSize,
|
BufferSize,
|
||||||
Buffer);
|
Buffer);
|
||||||
gBS->FreePool (FullFileName);
|
gBS->FreePool (FullFileName);
|
||||||
|
|
||||||
PrivateFile->Dirent = NULL;
|
PrivateFile->Dirent = NULL;
|
||||||
@ -1423,9 +1423,9 @@ Returns:
|
|||||||
}
|
}
|
||||||
|
|
||||||
Res = PrivateFile->UnixThunk->Write (
|
Res = PrivateFile->UnixThunk->Write (
|
||||||
PrivateFile->fd,
|
PrivateFile->fd,
|
||||||
Buffer,
|
Buffer,
|
||||||
*BufferSize);
|
*BufferSize);
|
||||||
if (Res == (UINTN)-1) {
|
if (Res == (UINTN)-1) {
|
||||||
Status = EFI_DEVICE_ERROR;
|
Status = EFI_DEVICE_ERROR;
|
||||||
goto Done;
|
goto Done;
|
||||||
@ -1850,7 +1850,7 @@ Returns:
|
|||||||
}
|
}
|
||||||
|
|
||||||
Status = gBS->AllocatePool (EfiBootServicesData, OldInfoSize,
|
Status = gBS->AllocatePool (EfiBootServicesData, OldInfoSize,
|
||||||
(VOID **)&OldFileInfo);
|
(VOID **)&OldFileInfo);
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
goto Done;
|
goto Done;
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -46,33 +46,33 @@ Abstract:
|
|||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
UINT32 Signature;
|
UINT32 Signature;
|
||||||
|
|
||||||
EFI_UNIX_THUNK_PROTOCOL* UnixThunk;
|
EFI_UNIX_THUNK_PROTOCOL* UnixThunk;
|
||||||
|
|
||||||
EFI_HANDLE DeviceHandle;
|
EFI_HANDLE DeviceHandle;
|
||||||
EFI_DEVICE_PATH_PROTOCOL* DevicePath;
|
EFI_DEVICE_PATH_PROTOCOL* DevicePath;
|
||||||
|
|
||||||
EFI_MAC_ADDRESS MacAddress;
|
EFI_MAC_ADDRESS MacAddress;
|
||||||
|
|
||||||
CHAR8* InterfaceName;
|
CHAR8* InterfaceName;
|
||||||
INTN ReadBufferSize;
|
INTN ReadBufferSize;
|
||||||
VOID* ReadBuffer;
|
VOID* ReadBuffer;
|
||||||
//
|
//
|
||||||
// Two walking pointers to manage the multiple packets that can be returned
|
// Two walking pointers to manage the multiple packets that can be returned
|
||||||
// in a single read.
|
// in a single read.
|
||||||
//
|
//
|
||||||
VOID* CurrentReadPointer;
|
VOID* CurrentReadPointer;
|
||||||
VOID* EndReadPointer;
|
VOID* EndReadPointer;
|
||||||
|
|
||||||
INTN BpfFd;
|
INTN BpfFd;
|
||||||
|
|
||||||
EFI_SIMPLE_NETWORK_PROTOCOL Snp;
|
EFI_SIMPLE_NETWORK_PROTOCOL Snp;
|
||||||
EFI_SIMPLE_NETWORK_MODE Mode;
|
EFI_SIMPLE_NETWORK_MODE Mode;
|
||||||
} UNIX_SNP_PRIVATE_DATA;
|
} UNIX_SNP_PRIVATE_DATA;
|
||||||
|
|
||||||
#define UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS(a) \
|
#define UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS(a) \
|
||||||
CR( a, UNIX_SNP_PRIVATE_DATA, Snp, UNIX_SNP_PRIVATE_DATA_SIGNATURE )
|
CR( a, UNIX_SNP_PRIVATE_DATA, Snp, UNIX_SNP_PRIVATE_DATA_SIGNATURE )
|
||||||
|
|
||||||
extern EFI_DRIVER_BINDING_PROTOCOL gUnixSnpDriverBinding;
|
extern EFI_DRIVER_BINDING_PROTOCOL gUnixSnpDriverBinding;
|
||||||
extern EFI_COMPONENT_NAME_PROTOCOL gUnixSnpDriverComponentName;
|
extern EFI_COMPONENT_NAME_PROTOCOL gUnixSnpDriverComponentName;
|
||||||
@ -153,4 +153,4 @@ UnixSnpDriverBindingStop (
|
|||||||
IN EFI_HANDLE *ChildHandleBuffer
|
IN EFI_HANDLE *ChildHandleBuffer
|
||||||
);
|
);
|
||||||
|
|
||||||
#endif // _UNIX_SNP_H_
|
#endif // _UNIX_SNP_H_
|
||||||
|
Reference in New Issue
Block a user