Use __asm__ to comply with disabled GNU extensions
This commit is contained in:
parent
030575592c
commit
2e0a87e596
@ -20,7 +20,7 @@ XTCDECL
|
||||
VOID
|
||||
ArClearInterruptFlag(VOID)
|
||||
{
|
||||
asm volatile("cli");
|
||||
__asm__ volatile("cli");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -40,7 +40,7 @@ ArCpuId(IN OUT PCPUID_REGISTERS Registers)
|
||||
UINT32 MaxLeaf;
|
||||
|
||||
/* Get highest function ID available */
|
||||
asm volatile("cpuid"
|
||||
__asm__ volatile("cpuid"
|
||||
: "=a" (MaxLeaf)
|
||||
: "a" (Registers->Leaf & 0x80000000)
|
||||
: "rbx",
|
||||
@ -55,7 +55,7 @@ ArCpuId(IN OUT PCPUID_REGISTERS Registers)
|
||||
}
|
||||
|
||||
/* Execute CPUID function */
|
||||
asm volatile("cpuid"
|
||||
__asm__ volatile("cpuid"
|
||||
: "=a" (Registers->Eax),
|
||||
"=b" (Registers->Ebx),
|
||||
"=c" (Registers->Ecx),
|
||||
@ -96,7 +96,7 @@ ArGetCpuFlags(VOID)
|
||||
ULONG_PTR Flags;
|
||||
|
||||
/* Get RFLAGS register */
|
||||
asm volatile("pushf\n"
|
||||
__asm__ volatile("pushf\n"
|
||||
"pop %0\n"
|
||||
: "=rm" (Flags)
|
||||
:
|
||||
@ -119,7 +119,7 @@ ULONG_PTR
|
||||
ArGetStackPointer(VOID)
|
||||
{
|
||||
/* Get current stack pointer */
|
||||
asm volatile("movq %%rsp, %%rax\n"
|
||||
__asm__ volatile("movq %%rsp, %%rax\n"
|
||||
"retq\n"
|
||||
:
|
||||
:
|
||||
@ -137,7 +137,7 @@ XTCDECL
|
||||
VOID
|
||||
ArHalt(VOID)
|
||||
{
|
||||
asm volatile("hlt");
|
||||
__asm__ volatile("hlt");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -174,7 +174,7 @@ XTCDECL
|
||||
VOID
|
||||
ArInvalidateTlbEntry(IN PVOID Address)
|
||||
{
|
||||
asm volatile("invlpg (%0)"
|
||||
__asm__ volatile("invlpg (%0)"
|
||||
:
|
||||
: "b" (Address)
|
||||
: "memory");
|
||||
@ -194,7 +194,7 @@ XTCDECL
|
||||
VOID
|
||||
ArLoadGlobalDescriptorTable(IN PVOID Source)
|
||||
{
|
||||
asm volatile("lgdt %0"
|
||||
__asm__ volatile("lgdt %0"
|
||||
:
|
||||
: "m" (*(PSHORT)Source)
|
||||
: "memory");
|
||||
@ -214,7 +214,7 @@ XTCDECL
|
||||
VOID
|
||||
ArLoadInterruptDescriptorTable(IN PVOID Source)
|
||||
{
|
||||
asm volatile("lidt %0"
|
||||
__asm__ volatile("lidt %0"
|
||||
:
|
||||
: "m" (*(PSHORT)Source)
|
||||
: "memory");
|
||||
@ -234,7 +234,7 @@ XTCDECL
|
||||
VOID
|
||||
ArLoadLocalDescriptorTable(IN USHORT Source)
|
||||
{
|
||||
asm volatile("lldtw %0"
|
||||
__asm__ volatile("lldtw %0"
|
||||
:
|
||||
: "g" (Source));
|
||||
}
|
||||
@ -253,7 +253,7 @@ XTCDECL
|
||||
VOID
|
||||
ArLoadMxcsrRegister(IN ULONG Source)
|
||||
{
|
||||
asm volatile("ldmxcsr %0"
|
||||
__asm__ volatile("ldmxcsr %0"
|
||||
:
|
||||
: "m" (Source));
|
||||
}
|
||||
@ -280,7 +280,7 @@ ArLoadSegment(IN USHORT Segment,
|
||||
{
|
||||
case SEGMENT_CS:
|
||||
/* Load CS Segment */
|
||||
asm volatile("mov %0, %%rax\n"
|
||||
__asm__ volatile("mov %0, %%rax\n"
|
||||
"push %%rax\n"
|
||||
"lea label(%%rip), %%rax\n"
|
||||
"push %%rax\n"
|
||||
@ -292,31 +292,31 @@ ArLoadSegment(IN USHORT Segment,
|
||||
break;
|
||||
case SEGMENT_DS:
|
||||
/* Load DS Segment */
|
||||
asm volatile("movl %0, %%ds"
|
||||
__asm__ volatile("movl %0, %%ds"
|
||||
:
|
||||
: "r" (Source));
|
||||
break;
|
||||
case SEGMENT_ES:
|
||||
/* Load ES Segment */
|
||||
asm volatile("movl %0, %%es"
|
||||
__asm__ volatile("movl %0, %%es"
|
||||
:
|
||||
: "r" (Source));
|
||||
break;
|
||||
case SEGMENT_FS:
|
||||
/* Load FS Segment */
|
||||
asm volatile("movl %0, %%fs"
|
||||
__asm__ volatile("movl %0, %%fs"
|
||||
:
|
||||
: "r" (Source));
|
||||
break;
|
||||
case SEGMENT_GS:
|
||||
/* Load GS Segment */
|
||||
asm volatile("movl %0, %%gs"
|
||||
__asm__ volatile("movl %0, %%gs"
|
||||
:
|
||||
: "r" (Source));
|
||||
break;
|
||||
/* Load SS Segment */
|
||||
case SEGMENT_SS:
|
||||
asm volatile("movl %0, %%ss"
|
||||
__asm__ volatile("movl %0, %%ss"
|
||||
:
|
||||
: "r" (Source));
|
||||
break;
|
||||
@ -337,7 +337,7 @@ XTCDECL
|
||||
VOID
|
||||
ArLoadTaskRegister(USHORT Source)
|
||||
{
|
||||
asm volatile("ltr %0"
|
||||
__asm__ volatile("ltr %0"
|
||||
:
|
||||
: "rm" (Source));
|
||||
}
|
||||
@ -354,7 +354,7 @@ VOID
|
||||
ArMemoryBarrier(VOID)
|
||||
{
|
||||
LONG Barrier;
|
||||
asm volatile("lock; orl $0, %0;"
|
||||
__asm__ volatile("lock; orl $0, %0;"
|
||||
:
|
||||
: "m"(Barrier));
|
||||
}
|
||||
@ -380,35 +380,35 @@ ArReadControlRegister(IN USHORT ControlRegister)
|
||||
{
|
||||
case 0:
|
||||
/* Read value from CR0 */
|
||||
asm volatile("mov %%cr0, %0"
|
||||
__asm__ volatile("mov %%cr0, %0"
|
||||
: "=r" (Value)
|
||||
:
|
||||
: "memory");
|
||||
break;
|
||||
case 2:
|
||||
/* Read value from CR2 */
|
||||
asm volatile("mov %%cr2, %0"
|
||||
__asm__ volatile("mov %%cr2, %0"
|
||||
: "=r" (Value)
|
||||
:
|
||||
: "memory");
|
||||
break;
|
||||
case 3:
|
||||
/* Read value from CR3 */
|
||||
asm volatile("mov %%cr3, %0"
|
||||
__asm__ volatile("mov %%cr3, %0"
|
||||
: "=r" (Value)
|
||||
:
|
||||
: "memory");
|
||||
break;
|
||||
case 4:
|
||||
/* Read value from CR4 */
|
||||
asm volatile("mov %%cr4, %0"
|
||||
__asm__ volatile("mov %%cr4, %0"
|
||||
: "=r" (Value)
|
||||
:
|
||||
: "memory");
|
||||
break;
|
||||
case 8:
|
||||
/* Read value from CR8 */
|
||||
asm volatile("mov %%cr8, %0"
|
||||
__asm__ volatile("mov %%cr8, %0"
|
||||
: "=r" (Value)
|
||||
:
|
||||
: "memory");
|
||||
@ -444,42 +444,42 @@ ArReadDebugRegister(IN USHORT DebugRegister)
|
||||
{
|
||||
case 0:
|
||||
/* Read value from DR0 */
|
||||
asm volatile("mov %%dr0, %0"
|
||||
__asm__ volatile("mov %%dr0, %0"
|
||||
: "=r" (Value));
|
||||
break;
|
||||
case 1:
|
||||
/* Read value from DR1 */
|
||||
asm volatile("mov %%dr1, %0"
|
||||
__asm__ volatile("mov %%dr1, %0"
|
||||
: "=r" (Value));
|
||||
break;
|
||||
case 2:
|
||||
/* Read value from DR2 */
|
||||
asm volatile("mov %%dr2, %0"
|
||||
__asm__ volatile("mov %%dr2, %0"
|
||||
: "=r" (Value));
|
||||
break;
|
||||
case 3:
|
||||
/* Read value from DR3 */
|
||||
asm volatile("mov %%dr3, %0"
|
||||
__asm__ volatile("mov %%dr3, %0"
|
||||
: "=r" (Value));
|
||||
break;
|
||||
case 4:
|
||||
/* Read value from DR4 */
|
||||
asm volatile("mov %%dr4, %0"
|
||||
__asm__ volatile("mov %%dr4, %0"
|
||||
: "=r" (Value));
|
||||
break;
|
||||
case 5:
|
||||
/* Read value from DR5 */
|
||||
asm volatile("mov %%dr5, %0"
|
||||
__asm__ volatile("mov %%dr5, %0"
|
||||
: "=r" (Value));
|
||||
break;
|
||||
case 6:
|
||||
/* Read value from DR6 */
|
||||
asm volatile("mov %%dr6, %0"
|
||||
__asm__ volatile("mov %%dr6, %0"
|
||||
: "=r" (Value));
|
||||
break;
|
||||
case 7:
|
||||
/* Read value from DR7 */
|
||||
asm volatile("mov %%dr7, %0"
|
||||
__asm__ volatile("mov %%dr7, %0"
|
||||
: "=r" (Value));
|
||||
break;
|
||||
default:
|
||||
@ -509,7 +509,7 @@ ArReadGSQuadWord(ULONG Offset)
|
||||
ULONGLONG Value;
|
||||
|
||||
/* Read quadword from GS segment */
|
||||
asm volatile("movq %%gs:%a[Offset], %q[Value]"
|
||||
__asm__ volatile("movq %%gs:%a[Offset], %q[Value]"
|
||||
: [Value] "=r" (Value)
|
||||
: [Offset] "ir" (Offset));
|
||||
return Value;
|
||||
@ -531,7 +531,7 @@ ArReadModelSpecificRegister(IN ULONG Register)
|
||||
{
|
||||
ULONG Low, High;
|
||||
|
||||
asm volatile("rdmsr"
|
||||
__asm__ volatile("rdmsr"
|
||||
: "=a" (Low),
|
||||
"=d" (High)
|
||||
: "c" (Register));
|
||||
@ -566,7 +566,7 @@ ArReadTimeStampCounter(VOID)
|
||||
{
|
||||
ULONGLONG Low, High;
|
||||
|
||||
asm volatile("rdtsc"
|
||||
__asm__ volatile("rdtsc"
|
||||
: "=a" (Low),
|
||||
"=d" (High));
|
||||
|
||||
@ -584,7 +584,7 @@ XTCDECL
|
||||
VOID
|
||||
ArReadWriteBarrier(VOID)
|
||||
{
|
||||
asm volatile(""
|
||||
__asm__ volatile(""
|
||||
:
|
||||
:
|
||||
: "memory");
|
||||
@ -601,7 +601,7 @@ XTCDECL
|
||||
VOID
|
||||
ArSetInterruptFlag(VOID)
|
||||
{
|
||||
asm volatile("sti");
|
||||
__asm__ volatile("sti");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -618,7 +618,7 @@ XTCDECL
|
||||
VOID
|
||||
ArStoreGlobalDescriptorTable(OUT PVOID Destination)
|
||||
{
|
||||
asm volatile("sgdt %0"
|
||||
__asm__ volatile("sgdt %0"
|
||||
: "=m" (*(PSHORT)Destination)
|
||||
:
|
||||
: "memory");
|
||||
@ -638,7 +638,7 @@ XTCDECL
|
||||
VOID
|
||||
ArStoreInterruptDescriptorTable(OUT PVOID Destination)
|
||||
{
|
||||
asm volatile("sidt %0"
|
||||
__asm__ volatile("sidt %0"
|
||||
: "=m" (*(PSHORT)Destination)
|
||||
:
|
||||
: "memory");
|
||||
@ -658,7 +658,7 @@ XTCDECL
|
||||
VOID
|
||||
ArStoreLocalDescriptorTable(OUT PVOID Destination)
|
||||
{
|
||||
asm volatile("sldt %0"
|
||||
__asm__ volatile("sldt %0"
|
||||
: "=m" (*(PSHORT)Destination)
|
||||
:
|
||||
: "memory");
|
||||
@ -685,27 +685,27 @@ ArStoreSegment(IN USHORT Segment,
|
||||
switch(Segment)
|
||||
{
|
||||
case SEGMENT_CS:
|
||||
asm volatile("movl %%cs, %0"
|
||||
__asm__ volatile("movl %%cs, %0"
|
||||
: "=r" (*(PUINT)Destination));
|
||||
break;
|
||||
case SEGMENT_DS:
|
||||
asm volatile("movl %%ds, %0"
|
||||
__asm__ volatile("movl %%ds, %0"
|
||||
: "=r" (*(PUINT)Destination));
|
||||
break;
|
||||
case SEGMENT_ES:
|
||||
asm volatile("movl %%es, %0"
|
||||
__asm__ volatile("movl %%es, %0"
|
||||
: "=r" (*(PUINT)Destination));
|
||||
break;
|
||||
case SEGMENT_FS:
|
||||
asm volatile("movl %%fs, %0"
|
||||
__asm__ volatile("movl %%fs, %0"
|
||||
: "=r" (*(PUINT)Destination));
|
||||
break;
|
||||
case SEGMENT_GS:
|
||||
asm volatile("movl %%gs, %0"
|
||||
__asm__ volatile("movl %%gs, %0"
|
||||
: "=r" (*(PUINT)Destination));
|
||||
break;
|
||||
case SEGMENT_SS:
|
||||
asm volatile("movl %%ss, %0"
|
||||
__asm__ volatile("movl %%ss, %0"
|
||||
: "=r" (*(PUINT)Destination));
|
||||
break;
|
||||
default:
|
||||
@ -728,7 +728,7 @@ XTCDECL
|
||||
VOID
|
||||
ArStoreTaskRegister(OUT PVOID Destination)
|
||||
{
|
||||
asm volatile("str %0"
|
||||
__asm__ volatile("str %0"
|
||||
: "=m" (*(PULONG)Destination)
|
||||
:
|
||||
: "memory");
|
||||
@ -757,35 +757,35 @@ ArWriteControlRegister(IN USHORT ControlRegister,
|
||||
{
|
||||
case 0:
|
||||
/* Write value to CR0 */
|
||||
asm volatile("mov %0, %%cr0"
|
||||
__asm__ volatile("mov %0, %%cr0"
|
||||
:
|
||||
: "r"(Value)
|
||||
: "memory");
|
||||
break;
|
||||
case 2:
|
||||
/* Write value to CR2 */
|
||||
asm volatile("mov %0, %%cr2"
|
||||
__asm__ volatile("mov %0, %%cr2"
|
||||
:
|
||||
: "r"(Value)
|
||||
: "memory");
|
||||
break;
|
||||
case 3:
|
||||
/* Write value to CR3 */
|
||||
asm volatile("mov %0, %%cr3"
|
||||
__asm__ volatile("mov %0, %%cr3"
|
||||
:
|
||||
: "r"(Value)
|
||||
: "memory");
|
||||
break;
|
||||
case 4:
|
||||
/* Write value to CR4 */
|
||||
asm volatile("mov %0, %%cr4"
|
||||
__asm__ volatile("mov %0, %%cr4"
|
||||
:
|
||||
: "r"(Value)
|
||||
: "memory");
|
||||
break;
|
||||
case 8:
|
||||
/* Write value to CR8 */
|
||||
asm volatile("mov %0, %%cr8"
|
||||
__asm__ volatile("mov %0, %%cr8"
|
||||
:
|
||||
: "r"(Value)
|
||||
: "memory");
|
||||
@ -816,49 +816,49 @@ ArWriteDebugRegister(IN USHORT DebugRegister,
|
||||
{
|
||||
case 0:
|
||||
/* Write value to DR0 */
|
||||
asm volatile("mov %0, %%dr0"
|
||||
__asm__ volatile("mov %0, %%dr0"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
case 1:
|
||||
/* Write value to DR1 */
|
||||
asm volatile("mov %0, %%dr1"
|
||||
__asm__ volatile("mov %0, %%dr1"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
case 2:
|
||||
/* Write value to DR2 */
|
||||
asm volatile("mov %0, %%dr2"
|
||||
__asm__ volatile("mov %0, %%dr2"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
case 3:
|
||||
/* Write value to DR3 */
|
||||
asm volatile("mov %0, %%dr3"
|
||||
__asm__ volatile("mov %0, %%dr3"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
case 4:
|
||||
/* Write value to DR4 */
|
||||
asm volatile("mov %0, %%dr4"
|
||||
__asm__ volatile("mov %0, %%dr4"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
case 5:
|
||||
/* Write value to DR5 */
|
||||
asm volatile("mov %0, %%dr5"
|
||||
__asm__ volatile("mov %0, %%dr5"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
case 6:
|
||||
/* Write value to DR6 */
|
||||
asm volatile("mov %0, %%dr6"
|
||||
__asm__ volatile("mov %0, %%dr6"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
case 7:
|
||||
/* Write value to DR7 */
|
||||
asm volatile("mov %0, %%dr7"
|
||||
__asm__ volatile("mov %0, %%dr7"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
@ -879,7 +879,7 @@ XTCDECL
|
||||
VOID
|
||||
ArWriteEflagsRegister(IN UINT_PTR Value)
|
||||
{
|
||||
asm volatile("push %0\n"
|
||||
__asm__ volatile("push %0\n"
|
||||
"popf"
|
||||
:
|
||||
: "rim" (Value));
|
||||
@ -906,7 +906,7 @@ ArWriteModelSpecificRegister(IN ULONG Register,
|
||||
ULONG Low = Value & 0xFFFFFFFF;
|
||||
ULONG High = Value >> 32;
|
||||
|
||||
asm volatile("wrmsr"
|
||||
__asm__ volatile("wrmsr"
|
||||
:
|
||||
: "c" (Register),
|
||||
"a" (Low),
|
||||
@ -924,7 +924,7 @@ XTCDECL
|
||||
VOID
|
||||
ArYieldProcessor(VOID)
|
||||
{
|
||||
asm volatile("pause"
|
||||
__asm__ volatile("pause"
|
||||
:
|
||||
:
|
||||
: "memory");
|
||||
|
@ -20,7 +20,7 @@ XTCDECL
|
||||
VOID
|
||||
ArClearInterruptFlag(VOID)
|
||||
{
|
||||
asm volatile("cli");
|
||||
__asm__ volatile("cli");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -40,7 +40,7 @@ ArCpuId(IN OUT PCPUID_REGISTERS Registers)
|
||||
UINT32 MaxLeaf;
|
||||
|
||||
/* Get highest function ID available */
|
||||
asm volatile("cpuid"
|
||||
__asm__ volatile("cpuid"
|
||||
: "=a" (MaxLeaf)
|
||||
: "a" (Registers->Leaf & 0x80000000)
|
||||
: "rbx",
|
||||
@ -55,7 +55,7 @@ ArCpuId(IN OUT PCPUID_REGISTERS Registers)
|
||||
}
|
||||
|
||||
/* Execute CPUID function */
|
||||
asm volatile("cpuid"
|
||||
__asm__ volatile("cpuid"
|
||||
: "=a" (Registers->Eax),
|
||||
"=b" (Registers->Ebx),
|
||||
"=c" (Registers->Ecx),
|
||||
@ -96,7 +96,7 @@ ArGetCpuFlags(VOID)
|
||||
ULONG_PTR Flags;
|
||||
|
||||
/* Get EFLAGS register */
|
||||
asm volatile("pushf\n"
|
||||
__asm__ volatile("pushf\n"
|
||||
"pop %0\n"
|
||||
: "=rm" (Flags)
|
||||
:
|
||||
@ -119,7 +119,7 @@ ULONG_PTR
|
||||
ArGetStackPointer(VOID)
|
||||
{
|
||||
/* Get current stack pointer */
|
||||
asm volatile("mov %%esp, %%eax\n"
|
||||
__asm__ volatile("mov %%esp, %%eax\n"
|
||||
"ret\n"
|
||||
:
|
||||
:
|
||||
@ -137,7 +137,7 @@ XTCDECL
|
||||
VOID
|
||||
ArHalt(VOID)
|
||||
{
|
||||
asm volatile("hlt");
|
||||
__asm__ volatile("hlt");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -174,7 +174,7 @@ XTCDECL
|
||||
VOID
|
||||
ArInvalidateTlbEntry(PVOID Address)
|
||||
{
|
||||
asm volatile("invlpg (%0)"
|
||||
__asm__ volatile("invlpg (%0)"
|
||||
:
|
||||
: "b" (Address)
|
||||
: "memory");
|
||||
@ -194,7 +194,7 @@ XTCDECL
|
||||
VOID
|
||||
ArLoadGlobalDescriptorTable(IN PVOID Source)
|
||||
{
|
||||
asm volatile("lgdt %0"
|
||||
__asm__ volatile("lgdt %0"
|
||||
:
|
||||
: "m" (*(PSHORT)Source)
|
||||
: "memory");
|
||||
@ -214,7 +214,7 @@ XTCDECL
|
||||
VOID
|
||||
ArLoadInterruptDescriptorTable(IN PVOID Source)
|
||||
{
|
||||
asm volatile("lidt %0"
|
||||
__asm__ volatile("lidt %0"
|
||||
:
|
||||
: "m" (*(PSHORT)Source)
|
||||
: "memory");
|
||||
@ -234,7 +234,7 @@ XTCDECL
|
||||
VOID
|
||||
ArLoadLocalDescriptorTable(IN USHORT Source)
|
||||
{
|
||||
asm volatile("lldtw %0"
|
||||
__asm__ volatile("lldtw %0"
|
||||
:
|
||||
: "g" (Source));
|
||||
}
|
||||
@ -261,7 +261,7 @@ ArLoadSegment(IN USHORT Segment,
|
||||
{
|
||||
case SEGMENT_CS:
|
||||
/* Load CS Segment */
|
||||
asm volatile("mov %0, %%eax\n"
|
||||
__asm__ volatile("mov %0, %%eax\n"
|
||||
"push %%eax\n"
|
||||
"lea label, %%eax\n"
|
||||
"push %%eax\n"
|
||||
@ -273,31 +273,31 @@ ArLoadSegment(IN USHORT Segment,
|
||||
break;
|
||||
case SEGMENT_DS:
|
||||
/* Load DS Segment */
|
||||
asm volatile("movl %0, %%ds"
|
||||
__asm__ volatile("movl %0, %%ds"
|
||||
:
|
||||
: "r" (Source));
|
||||
break;
|
||||
case SEGMENT_ES:
|
||||
/* Load ES Segment */
|
||||
asm volatile("movl %0, %%es"
|
||||
__asm__ volatile("movl %0, %%es"
|
||||
:
|
||||
: "r" (Source));
|
||||
break;
|
||||
case SEGMENT_FS:
|
||||
/* Load FS Segment */
|
||||
asm volatile("movl %0, %%fs"
|
||||
__asm__ volatile("movl %0, %%fs"
|
||||
:
|
||||
: "r" (Source));
|
||||
break;
|
||||
case SEGMENT_GS:
|
||||
/* Load GS Segment */
|
||||
asm volatile("movl %0, %%gs"
|
||||
__asm__ volatile("movl %0, %%gs"
|
||||
:
|
||||
: "r" (Source));
|
||||
break;
|
||||
case SEGMENT_SS:
|
||||
/* Load SS Segment */
|
||||
asm volatile("movl %0, %%ss"
|
||||
__asm__ volatile("movl %0, %%ss"
|
||||
:
|
||||
: "r" (Source));
|
||||
break;
|
||||
@ -318,7 +318,7 @@ XTCDECL
|
||||
VOID
|
||||
ArLoadTaskRegister(USHORT Source)
|
||||
{
|
||||
asm volatile("ltr %0"
|
||||
__asm__ volatile("ltr %0"
|
||||
:
|
||||
: "rm" (Source));
|
||||
}
|
||||
@ -335,7 +335,7 @@ VOID
|
||||
ArMemoryBarrier(VOID)
|
||||
{
|
||||
LONG Barrier;
|
||||
asm volatile("xchg %%eax, %0"
|
||||
__asm__ volatile("xchg %%eax, %0"
|
||||
:
|
||||
: "m" (Barrier)
|
||||
: "%eax");
|
||||
@ -362,28 +362,28 @@ ArReadControlRegister(IN USHORT ControlRegister)
|
||||
{
|
||||
case 0:
|
||||
/* Read value from CR0 */
|
||||
asm volatile("mov %%cr0, %0"
|
||||
__asm__ volatile("mov %%cr0, %0"
|
||||
: "=r" (Value)
|
||||
:
|
||||
: "memory");
|
||||
break;
|
||||
case 2:
|
||||
/* Read value from CR2 */
|
||||
asm volatile("mov %%cr2, %0"
|
||||
__asm__ volatile("mov %%cr2, %0"
|
||||
: "=r" (Value)
|
||||
:
|
||||
: "memory");
|
||||
break;
|
||||
case 3:
|
||||
/* Read value from CR3 */
|
||||
asm volatile("mov %%cr3, %0"
|
||||
__asm__ volatile("mov %%cr3, %0"
|
||||
: "=r" (Value)
|
||||
:
|
||||
: "memory");
|
||||
break;
|
||||
case 4:
|
||||
/* Read value from CR4 */
|
||||
asm volatile("mov %%cr4, %0"
|
||||
__asm__ volatile("mov %%cr4, %0"
|
||||
: "=r" (Value)
|
||||
:
|
||||
: "memory");
|
||||
@ -419,42 +419,42 @@ ArReadDebugRegister(IN USHORT DebugRegister)
|
||||
{
|
||||
case 0:
|
||||
/* Read value from DR0 */
|
||||
asm volatile("mov %%dr0, %0"
|
||||
__asm__ volatile("mov %%dr0, %0"
|
||||
: "=r" (Value));
|
||||
break;
|
||||
case 1:
|
||||
/* Read value from DR1 */
|
||||
asm volatile("mov %%dr1, %0"
|
||||
__asm__ volatile("mov %%dr1, %0"
|
||||
: "=r" (Value));
|
||||
break;
|
||||
case 2:
|
||||
/* Read value from DR2 */
|
||||
asm volatile("mov %%dr2, %0"
|
||||
__asm__ volatile("mov %%dr2, %0"
|
||||
: "=r" (Value));
|
||||
break;
|
||||
case 3:
|
||||
/* Read value from DR3 */
|
||||
asm volatile("mov %%dr3, %0"
|
||||
__asm__ volatile("mov %%dr3, %0"
|
||||
: "=r" (Value));
|
||||
break;
|
||||
case 4:
|
||||
/* Read value from DR4 */
|
||||
asm volatile("mov %%dr4, %0"
|
||||
__asm__ volatile("mov %%dr4, %0"
|
||||
: "=r" (Value));
|
||||
break;
|
||||
case 5:
|
||||
/* Read value from DR5 */
|
||||
asm volatile("mov %%dr5, %0"
|
||||
__asm__ volatile("mov %%dr5, %0"
|
||||
: "=r" (Value));
|
||||
break;
|
||||
case 6:
|
||||
/* Read value from DR6 */
|
||||
asm volatile("mov %%dr6, %0"
|
||||
__asm__ volatile("mov %%dr6, %0"
|
||||
: "=r" (Value));
|
||||
break;
|
||||
case 7:
|
||||
/* Read value from DR7 */
|
||||
asm volatile("mov %%dr7, %0"
|
||||
__asm__ volatile("mov %%dr7, %0"
|
||||
: "=r" (Value));
|
||||
break;
|
||||
default:
|
||||
@ -482,7 +482,7 @@ ULONG
|
||||
ArReadFSDualWord(ULONG Offset)
|
||||
{
|
||||
ULONG Value;
|
||||
asm volatile("movl %%fs:%a[Offset], %k[Value]"
|
||||
__asm__ volatile("movl %%fs:%a[Offset], %k[Value]"
|
||||
: [Value] "=r" (Value)
|
||||
: [Offset] "ir" (Offset));
|
||||
return Value;
|
||||
@ -504,7 +504,7 @@ ArReadModelSpecificRegister(IN ULONG Register)
|
||||
{
|
||||
ULONGLONG Value;
|
||||
|
||||
asm volatile("rdmsr"
|
||||
__asm__ volatile("rdmsr"
|
||||
: "=A" (Value)
|
||||
: "c" (Register));
|
||||
return Value;
|
||||
@ -537,7 +537,7 @@ ArReadTimeStampCounter(VOID)
|
||||
{
|
||||
ULONGLONG Value;
|
||||
|
||||
asm volatile("rdtsc"
|
||||
__asm__ volatile("rdtsc"
|
||||
: "=A" (Value));
|
||||
|
||||
return Value;
|
||||
@ -554,7 +554,7 @@ XTCDECL
|
||||
VOID
|
||||
ArReadWriteBarrier(VOID)
|
||||
{
|
||||
asm volatile(""
|
||||
__asm__ volatile(""
|
||||
:
|
||||
:
|
||||
: "memory");
|
||||
@ -571,7 +571,7 @@ XTCDECL
|
||||
VOID
|
||||
ArSetInterruptFlag(VOID)
|
||||
{
|
||||
asm volatile("sti");
|
||||
__asm__ volatile("sti");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -588,7 +588,7 @@ XTCDECL
|
||||
VOID
|
||||
ArStoreGlobalDescriptorTable(OUT PVOID Destination)
|
||||
{
|
||||
asm volatile("sgdt %0"
|
||||
__asm__ volatile("sgdt %0"
|
||||
: "=m" (*(PSHORT)Destination)
|
||||
:
|
||||
: "memory");
|
||||
@ -608,7 +608,7 @@ XTCDECL
|
||||
VOID
|
||||
ArStoreInterruptDescriptorTable(OUT PVOID Destination)
|
||||
{
|
||||
asm volatile("sidt %0"
|
||||
__asm__ volatile("sidt %0"
|
||||
: "=m" (*(PSHORT)Destination)
|
||||
:
|
||||
: "memory");
|
||||
@ -628,7 +628,7 @@ XTCDECL
|
||||
VOID
|
||||
ArStoreLocalDescriptorTable(OUT PVOID Destination)
|
||||
{
|
||||
asm volatile("sldt %0"
|
||||
__asm__ volatile("sldt %0"
|
||||
: "=m" (*(PSHORT)Destination)
|
||||
:
|
||||
: "memory");
|
||||
@ -655,27 +655,27 @@ ArStoreSegment(IN USHORT Segment,
|
||||
switch(Segment)
|
||||
{
|
||||
case SEGMENT_CS:
|
||||
asm volatile("movl %%cs, %0"
|
||||
__asm__ volatile("movl %%cs, %0"
|
||||
: "=r" (*(PUINT)Destination));
|
||||
break;
|
||||
case SEGMENT_DS:
|
||||
asm volatile("movl %%ds, %0"
|
||||
__asm__ volatile("movl %%ds, %0"
|
||||
: "=r" (*(PUINT)Destination));
|
||||
break;
|
||||
case SEGMENT_ES:
|
||||
asm volatile("movl %%es, %0"
|
||||
__asm__ volatile("movl %%es, %0"
|
||||
: "=r" (*(PUINT)Destination));
|
||||
break;
|
||||
case SEGMENT_FS:
|
||||
asm volatile("movl %%fs, %0"
|
||||
__asm__ volatile("movl %%fs, %0"
|
||||
: "=r" (*(PUINT)Destination));
|
||||
break;
|
||||
case SEGMENT_GS:
|
||||
asm volatile("movl %%gs, %0"
|
||||
__asm__ volatile("movl %%gs, %0"
|
||||
: "=r" (*(PUINT)Destination));
|
||||
break;
|
||||
case SEGMENT_SS:
|
||||
asm volatile("movl %%ss, %0"
|
||||
__asm__ volatile("movl %%ss, %0"
|
||||
: "=r" (*(PUINT)Destination));
|
||||
break;
|
||||
default:
|
||||
@ -698,7 +698,7 @@ XTCDECL
|
||||
VOID
|
||||
ArStoreTaskRegister(OUT PVOID Destination)
|
||||
{
|
||||
asm volatile("str %0"
|
||||
__asm__ volatile("str %0"
|
||||
: "=m" (*(PULONG)Destination)
|
||||
:
|
||||
: "memory");
|
||||
@ -727,28 +727,28 @@ ArWriteControlRegister(IN USHORT ControlRegister,
|
||||
{
|
||||
case 0:
|
||||
/* Write value to CR0 */
|
||||
asm volatile("mov %0, %%cr0"
|
||||
__asm__ volatile("mov %0, %%cr0"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
break;
|
||||
case 2:
|
||||
/* Write value to CR2 */
|
||||
asm volatile("mov %0, %%cr2"
|
||||
__asm__ volatile("mov %0, %%cr2"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
break;
|
||||
case 3:
|
||||
/* Write value to CR3 */
|
||||
asm volatile("mov %0, %%cr3"
|
||||
__asm__ volatile("mov %0, %%cr3"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
break;
|
||||
case 4:
|
||||
/* Write value to CR4 */
|
||||
asm volatile("mov %0, %%cr4"
|
||||
__asm__ volatile("mov %0, %%cr4"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
@ -779,49 +779,49 @@ ArWriteDebugRegister(IN USHORT DebugRegister,
|
||||
{
|
||||
case 0:
|
||||
/* Write value to DR0 */
|
||||
asm volatile("mov %0, %%dr0"
|
||||
__asm__ volatile("mov %0, %%dr0"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
case 1:
|
||||
/* Write value to DR1 */
|
||||
asm volatile("mov %0, %%dr1"
|
||||
__asm__ volatile("mov %0, %%dr1"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
case 2:
|
||||
/* Write value to DR2 */
|
||||
asm volatile("mov %0, %%dr2"
|
||||
__asm__ volatile("mov %0, %%dr2"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
case 3:
|
||||
/* Write value to DR3 */
|
||||
asm volatile("mov %0, %%dr3"
|
||||
__asm__ volatile("mov %0, %%dr3"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
case 4:
|
||||
/* Write value to DR4 */
|
||||
asm volatile("mov %0, %%dr4"
|
||||
__asm__ volatile("mov %0, %%dr4"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
case 5:
|
||||
/* Write value to DR5 */
|
||||
asm volatile("mov %0, %%dr5"
|
||||
__asm__ volatile("mov %0, %%dr5"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
case 6:
|
||||
/* Write value to DR6 */
|
||||
asm volatile("mov %0, %%dr6"
|
||||
__asm__ volatile("mov %0, %%dr6"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
case 7:
|
||||
/* Write value to DR7 */
|
||||
asm volatile("mov %0, %%dr7"
|
||||
__asm__ volatile("mov %0, %%dr7"
|
||||
:
|
||||
: "r" (Value)
|
||||
: "memory");
|
||||
@ -842,7 +842,7 @@ XTCDECL
|
||||
VOID
|
||||
ArWriteEflagsRegister(IN UINT_PTR Value)
|
||||
{
|
||||
asm volatile("push %0\n"
|
||||
__asm__ volatile("push %0\n"
|
||||
"popf"
|
||||
:
|
||||
: "rim" (Value));
|
||||
@ -866,7 +866,7 @@ VOID
|
||||
ArWriteModelSpecificRegister(IN ULONG Register,
|
||||
IN ULONGLONG Value)
|
||||
{
|
||||
asm volatile("wrmsr"
|
||||
__asm__ volatile("wrmsr"
|
||||
:
|
||||
: "c" (Register),
|
||||
"A" (Value));
|
||||
@ -883,7 +883,7 @@ XTCDECL
|
||||
VOID
|
||||
ArYieldProcessor(VOID)
|
||||
{
|
||||
asm volatile("pause"
|
||||
__asm__ volatile("pause"
|
||||
:
|
||||
:
|
||||
: "memory");
|
||||
|
@ -24,7 +24,7 @@ UCHAR
|
||||
HlIoPortInByte(IN USHORT Port)
|
||||
{
|
||||
UCHAR Value;
|
||||
asm volatile("inb %1, %0"
|
||||
__asm__ volatile("inb %1, %0"
|
||||
: "=a" (Value)
|
||||
: "Nd" (Port));
|
||||
return Value;
|
||||
@ -45,7 +45,7 @@ ULONG
|
||||
HlIoPortInLong(IN USHORT Port)
|
||||
{
|
||||
ULONG Value;
|
||||
asm volatile("inl %1, %0"
|
||||
__asm__ volatile("inl %1, %0"
|
||||
: "=a" (Value)
|
||||
: "Nd" (Port));
|
||||
return Value;
|
||||
@ -66,7 +66,7 @@ USHORT
|
||||
HlIoPortInShort(IN USHORT Port)
|
||||
{
|
||||
USHORT Value;
|
||||
asm volatile("inw %1, %0"
|
||||
__asm__ volatile("inw %1, %0"
|
||||
: "=a" (Value)
|
||||
: "Nd" (Port));
|
||||
return Value;
|
||||
@ -90,7 +90,7 @@ VOID
|
||||
HlIoPortOutByte(IN USHORT Port,
|
||||
IN UCHAR Value)
|
||||
{
|
||||
asm volatile("outb %0, %1"
|
||||
__asm__ volatile("outb %0, %1"
|
||||
:
|
||||
: "a" (Value),
|
||||
"Nd" (Port));
|
||||
@ -114,7 +114,7 @@ VOID
|
||||
HlIoPortOutLong(IN USHORT Port,
|
||||
IN ULONG Value)
|
||||
{
|
||||
asm volatile("outl %0, %1"
|
||||
__asm__ volatile("outl %0, %1"
|
||||
:
|
||||
: "a" (Value),
|
||||
"Nd" (Port));
|
||||
@ -138,7 +138,7 @@ VOID
|
||||
HlIoPortOutShort(IN USHORT Port,
|
||||
IN USHORT Value)
|
||||
{
|
||||
asm volatile("outw %0, %1"
|
||||
__asm__ volatile("outw %0, %1"
|
||||
:
|
||||
: "a" (Value),
|
||||
"Nd" (Port));
|
||||
|
@ -24,7 +24,7 @@ UCHAR
|
||||
HlIoPortInByte(IN USHORT Port)
|
||||
{
|
||||
UCHAR Value;
|
||||
asm volatile("inb %1, %0"
|
||||
__asm__ volatile("inb %1, %0"
|
||||
: "=a" (Value)
|
||||
: "Nd" (Port));
|
||||
return Value;
|
||||
@ -45,7 +45,7 @@ ULONG
|
||||
HlIoPortInLong(IN USHORT Port)
|
||||
{
|
||||
ULONG Value;
|
||||
asm volatile("inl %1, %0"
|
||||
__asm__ volatile("inl %1, %0"
|
||||
: "=a" (Value)
|
||||
: "Nd" (Port));
|
||||
return Value;
|
||||
@ -66,7 +66,7 @@ USHORT
|
||||
HlIoPortInShort(IN USHORT Port)
|
||||
{
|
||||
USHORT Value;
|
||||
asm volatile("inw %1, %0"
|
||||
__asm__ volatile("inw %1, %0"
|
||||
: "=a" (Value)
|
||||
: "Nd" (Port));
|
||||
return Value;
|
||||
@ -90,7 +90,7 @@ VOID
|
||||
HlIoPortOutByte(IN USHORT Port,
|
||||
IN UCHAR Value)
|
||||
{
|
||||
asm volatile("outb %0, %1"
|
||||
__asm__ volatile("outb %0, %1"
|
||||
:
|
||||
: "a" (Value),
|
||||
"Nd" (Port));
|
||||
@ -114,7 +114,7 @@ VOID
|
||||
HlIoPortOutLong(IN USHORT Port,
|
||||
IN ULONG Value)
|
||||
{
|
||||
asm volatile("outl %0, %1"
|
||||
__asm__ volatile("outl %0, %1"
|
||||
:
|
||||
: "a" (Value),
|
||||
"Nd" (Port));
|
||||
@ -138,7 +138,7 @@ VOID
|
||||
HlIoPortOutShort(IN USHORT Port,
|
||||
IN USHORT Value)
|
||||
{
|
||||
asm volatile("outw %0, %1"
|
||||
__asm__ volatile("outw %0, %1"
|
||||
:
|
||||
: "a" (Value),
|
||||
"Nd" (Port));
|
||||
|
@ -122,7 +122,7 @@ VOID
|
||||
KepSwitchBootStack(IN ULONG_PTR Stack)
|
||||
{
|
||||
/* Discard old stack frame, switch stack and jump to KepStartKernel() */
|
||||
asm volatile("mov %0, %%rdx\n"
|
||||
__asm__ volatile("mov %0, %%rdx\n"
|
||||
"xor %%rbp, %%rbp\n"
|
||||
"mov %%rdx, %%rsp\n"
|
||||
"sub %1, %%rsp\n"
|
||||
|
@ -122,7 +122,7 @@ VOID
|
||||
KepSwitchBootStack(IN ULONG_PTR Stack)
|
||||
{
|
||||
/* Discard old stack frame, switch stack, make space for NPX and jump to KepStartKernel() */
|
||||
asm volatile("mov %0, %%edx\n"
|
||||
__asm__ volatile("mov %0, %%edx\n"
|
||||
"xor %%ebp, %%ebp\n"
|
||||
"mov %%edx, %%esp\n"
|
||||
"sub %1, %%esp\n"
|
||||
|
@ -27,7 +27,7 @@ VOID
|
||||
MmZeroPages(IN PVOID Address,
|
||||
IN ULONG Size)
|
||||
{
|
||||
asm volatile("xor %%rax, %%rax\n"
|
||||
__asm__ volatile("xor %%rax, %%rax\n"
|
||||
"mov %0, %%rdi\n"
|
||||
"mov %1, %%ecx\n"
|
||||
"shr $3, %%ecx\n"
|
||||
|
@ -27,7 +27,7 @@ VOID
|
||||
MmZeroPages(IN PVOID Address,
|
||||
IN ULONG Size)
|
||||
{
|
||||
asm volatile("xor %%eax, %%eax\n"
|
||||
__asm__ volatile("xor %%eax, %%eax\n"
|
||||
"rep stosb"
|
||||
: "=D"(Address),
|
||||
"=c"(Size)
|
||||
|
Loading…
x
Reference in New Issue
Block a user