mirror of
https://github.com/reactos/reactos.git
synced 2025-05-28 13:38:19 +00:00
[HAL]: Implement system bus (and ISA) vector/interrupt translation.
svn path=/trunk/; revision=47672
This commit is contained in:
parent
dcde6d79da
commit
1b1d03c8a0
1 changed files with 39 additions and 3 deletions
|
@ -29,6 +29,35 @@ HalpTranslateSystemBusAddress(IN PBUS_HANDLER BusHandler,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
ULONG
|
||||
NTAPI
|
||||
HalpGetRootInterruptVector(IN ULONG BusInterruptLevel,
|
||||
IN ULONG BusInterruptVector,
|
||||
OUT PKIRQL Irql,
|
||||
OUT PKAFFINITY Affinity)
|
||||
{
|
||||
ULONG SystemVector;
|
||||
|
||||
/* Get the system vector */
|
||||
SystemVector = PRIMARY_VECTOR_BASE + BusInterruptLevel;
|
||||
|
||||
/* Validate it */
|
||||
if ((SystemVector < PRIMARY_VECTOR_BASE) || (SystemVector > PRIMARY_VECTOR_BASE + 27))
|
||||
{
|
||||
/* Invalid vector */
|
||||
DPRINT1("Vector %lx is too low or too high!\n", SystemVector);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Return the IRQL and affinity */
|
||||
*Irql = (PRIMARY_VECTOR_BASE + 27) - SystemVector;
|
||||
*Affinity = HalpDefaultInterruptAffinity;
|
||||
ASSERT(HalpDefaultInterruptAffinity);
|
||||
|
||||
/* Return the vector */
|
||||
return SystemVector;
|
||||
}
|
||||
|
||||
ULONG
|
||||
NTAPI
|
||||
HalpGetSystemInterruptVector(IN PBUS_HANDLER BusHandler,
|
||||
|
@ -38,10 +67,17 @@ HalpGetSystemInterruptVector(IN PBUS_HANDLER BusHandler,
|
|||
OUT PKIRQL Irql,
|
||||
OUT PKAFFINITY Affinity)
|
||||
{
|
||||
ULONG Vector;
|
||||
|
||||
/* Get the root vector */
|
||||
DPRINT1("SYSTEM GetVector\n");
|
||||
while (TRUE);
|
||||
return 0;
|
||||
Vector = HalpGetRootInterruptVector(BusInterruptLevel,
|
||||
BusInterruptVector,
|
||||
Irql,
|
||||
Affinity);
|
||||
|
||||
/* Check if the vector is owned by the HAL and fail if it is */
|
||||
if (HalpIDTUsageFlags[Vector].Flags & IDT_REGISTERED) DPRINT1("Vector %lx is ALREADY IN USE!\n", Vector);
|
||||
return (HalpIDTUsageFlags[Vector].Flags & IDT_REGISTERED) ? 0 : Vector;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
Loading…
Reference in a new issue