There are already hal private dispatch table functions to deal with this. Please see older HAL commits and the changes in ke/i386/interrupt.c & friends.
Best regards, Alex Ionescu On Mon, Sep 5, 2011 at 4:20 PM, <[email protected]> wrote: > Author: tkreuzer > Date: Mon Sep 5 15:20:07 2011 > New Revision: 53600 > > URL: http://svn.reactos.org/svn/reactos?rev=53600&view=rev > Log: > [HAL] > - Use functions instead of macros for irq<->vector<->irql translation, this > will be neccessary, once apic support is there > - Disable mp hal in rbuild for now, its broken anyway > > Modified: > trunk/reactos/hal/halx86/directory.rbuild > trunk/reactos/hal/halx86/include/hal.h > trunk/reactos/hal/halx86/include/halirq.h > trunk/reactos/hal/halx86/up/pic.c > > Modified: trunk/reactos/hal/halx86/directory.rbuild > URL: > http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/directory.rbuild?rev=53600&r1=53599&r2=53600&view=diff > > ============================================================================== > --- trunk/reactos/hal/halx86/directory.rbuild [iso-8859-1] (original) > +++ trunk/reactos/hal/halx86/directory.rbuild [iso-8859-1] Mon Sep 5 > 15:20:07 2011 > @@ -13,9 +13,9 @@ > <xi:include href="hal.rbuild" /> > <xi:include href="halacpi.rbuild" /> > <xi:include href="halxbox.rbuild" /> > - <if property="BUILD_MP" value="1"> > + <!-- if property="BUILD_MP" value="1"> > <xi:include href="halmps.rbuild" /> > - </if> > + </if --> > </if> > > <if property="ARCH" value="amd64"> > > Modified: trunk/reactos/hal/halx86/include/hal.h > URL: > http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/include/hal.h?rev=53600&r1=53599&r2=53600&view=diff > > ============================================================================== > --- trunk/reactos/hal/halx86/include/hal.h [iso-8859-1] (original) > +++ trunk/reactos/hal/halx86/include/hal.h [iso-8859-1] Mon Sep 5 15:20:07 > 2011 > @@ -55,13 +55,11 @@ > #define TAG_BUS_HANDLER 'BusH' > > /* Internal HAL Headers */ > -#include "apic.h" > #include "bus.h" > #include "halirq.h" > #include "haldma.h" > #include "halp.h" > #include "mps.h" > -#include "ioapic.h" > #include "halacpi.h" > > /* EOF */ > > Modified: trunk/reactos/hal/halx86/include/halirq.h > URL: > http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/include/halirq.h?rev=53600&r1=53599&r2=53600&view=diff > > ============================================================================== > --- trunk/reactos/hal/halx86/include/halirq.h [iso-8859-1] (original) > +++ trunk/reactos/hal/halx86/include/halirq.h [iso-8859-1] Mon Sep 5 > 15:20:07 2011 > @@ -4,29 +4,19 @@ > > #pragma once > > -#ifdef CONFIG_SMP > +UCHAR > +FASTCALL > +HalpIrqToVector(UCHAR Irq); > > -#define FIRST_DEVICE_VECTOR (0x30) > -#define FIRST_SYSTEM_VECTOR (0xef) > +KIRQL > +FASTCALL > +HalpVectorToIrql(UCHAR Vector); > > -#define IRQ_BASE FIRST_DEVICE_VECTOR > -#define NR_IRQS (FIRST_SYSTEM_VECTOR - > FIRST_DEVICE_VECTOR) > +UCHAR > +FASTCALL > +HalpVectorToIrq(UCHAR Vector); > > -/* > - * FIXME: > - * This does not work if we have more than 24 IRQs (ie. more than one > I/O APIC) > - */ > -#define VECTOR2IRQ(vector) (23 - (vector - IRQ_BASE) / 8) > -#define VECTOR2IRQL(vector) (PROFILE_LEVEL - VECTOR2IRQ(vector)) > -#define IRQ2VECTOR(irq) (((23 - (irq)) * 8) + > FIRST_DEVICE_VECTOR) > +#define VECTOR2IRQ(vector) HalpVectorToIrq(vector) > +#define VECTOR2IRQL(vector) HalpVectorToIrql(vector) > +#define IRQ2VECTOR(irq) HalpIrqToVector(irq) > > -#else > - > -#define IRQ_BASE (0x30) > -#define NR_IRQS (16) > - > -#define VECTOR2IRQ(vector) ((vector) - IRQ_BASE) > -#define VECTOR2IRQL(vector) (PROFILE_LEVEL - VECTOR2IRQ(vector)) > -#define IRQ2VECTOR(irq) ((irq) + IRQ_BASE) > - > -#endif > > Modified: trunk/reactos/hal/halx86/up/pic.c > URL: > http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/up/pic.c?rev=53600&r1=53599&r2=53600&view=diff > > ============================================================================== > --- trunk/reactos/hal/halx86/up/pic.c [iso-8859-1] (original) > +++ trunk/reactos/hal/halx86/up/pic.c [iso-8859-1] Mon Sep 5 15:20:07 2011 > @@ -512,6 +512,27 @@ > __writeeflags(EFlags); > } > > +UCHAR > +FASTCALL > +HalpIrqToVector(UCHAR Irq) > +{ > + return (PRIMARY_VECTOR_BASE + Irq); > +} > + > +UCHAR > +FASTCALL > +HalpVectorToIrq(UCHAR Vector) > +{ > + return (Vector - PRIMARY_VECTOR_BASE); > +} > + > +KIRQL > +FASTCALL > +HalpVectorToIrql(UCHAR Vector) > +{ > + return (PROFILE_LEVEL - (Vector - PRIMARY_VECTOR_BASE)); > +} > + > /* IRQL MANAGEMENT > ************************************************************/ > > /* > > >
_______________________________________________ Ros-dev mailing list [email protected] http://www.reactos.org/mailman/listinfo/ros-dev
