_HalpLastPerfCounterHigh: .long 0
_HalpPerfCounterLow: .long 0
_HalpPerfCounterHigh: .long 0
-_HalpSystemHardwareLock: .long 0
_HalpSystemHardwareFlags: .long 0
_UnhandledMsg:
popf
ret
#endif
+
.endfunc
.global _HalpAcquireSystemHardwareSpinLock@0
/* Spin */
SPIN_ON_LOCK(eax, HardwareLock)
-
#else
/* Save EFLAGS, disable interrupts and return */
pushf
pop _HalpSystemHardwareFlags
ret
#endif
+
.endfunc
.global _HalpCalibrateStallExecution@0
jmp _Kei386EoiHelper@0
.endfunc
+.globl _HalpProfileInterrupt@0
+.func HalpProfileInterrupt@0
+TRAP_FIXUPS hpi_a, hpi_t, DoFixupV86, DoFixupAbios
+_HalpProfileInterrupt@0:
+
+ /* Enter trap */
+ INT_PROLOG hpi_a, hpi_t, DoPushFakeErrorCode
+
+ /* Push vector and make stack for IRQL */
+ push 0x38
+ sub esp, 4
+
+ /* Begin the interrupt */
+ push esp
+ push 0x38
+ push PROFILE_LEVEL
+ call _HalBeginSystemInterrupt@12
+
+ /* Check if it's spurious */
+ or al, al
+ jz Spurious
+
+ /* FIXME: We should not be getting profile interrupts yet! */
+ int 3
+.endfunc