x86: Add context value to loapic_mkstub and ioapic_mkstub macros

Add a context value to the ioapic and loapic mkstub macros to allow
the developer to specify a context value that will be passed on the
stack to the interrupt service routines.

All the invocations for the loapic_mkstub and ioapic_mkstub macros
have been changed to pass in 0 so there is no functional difference
ATM.  This change removes the need for drivers to have trampoline ISR
routines to pass a context vaule to their generic ISR routine.

This is the first step in getting rid of the hack where the driver
needs to look into the __initconfig_* linker objects.

Change-Id: I2c5eaa20d8cb5a42ef445762c426854be32c8452
Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
This commit is contained in:
Dirk Brandewie 2015-10-15 08:23:03 -07:00 committed by Anas Nashif
commit ad5af93f25
4 changed files with 17 additions and 17 deletions

View file

@ -30,57 +30,57 @@ by x86 platforms.
#include <drivers/system_timer.h>
#if defined(CONFIG_LOAPIC_TIMER)
loapic_mkstub loapic _timer_int_handler
loapic_mkstub loapic _timer_int_handler 0
#endif
#if defined(CONFIG_HPET_TIMER)
ioapic_mkstub hpet _timer_int_handler
ioapic_mkstub hpet _timer_int_handler 0
#endif
#if defined(CONFIG_BLUETOOTH_UART)
#if defined(CONFIG_IOAPIC)
ioapic_mkstub bluetooth bt_uart_isr
ioapic_mkstub bluetooth bt_uart_isr 0
#endif /* CONFIG_IOAPIC */
#endif /* CONFIG_BLUETOOTH_UART */
#if defined(CONFIG_CONSOLE_HANDLER)
#if defined(CONFIG_IOAPIC)
ioapic_mkstub console uart_console_isr
ioapic_mkstub console uart_console_isr 0
#endif /* CONFIG_IOAPIC */
#endif /* CONFIG_CONSOLE_HANDLER */
#if defined(CONFIG_UART_SIMPLE)
#if defined(CONFIG_IOAPIC)
ioapic_mkstub uart_simple uart_simple_isr
ioapic_mkstub uart_simple uart_simple_isr 0
#endif /* CONFIG_IOAPIC */
#endif /* CONFIG_UART_SIMPLE */
#if defined(CONFIG_GPIO_DW)
#if CONFIG_GPIO_DW_0
ioapic_mkstub gpio_dw_0 gpio_dw_isr_0
ioapic_mkstub gpio_dw_0 gpio_dw_isr_0 0
#endif /* CONFIG_GPIO_DW_0 */
#if CONFIG_GPIO_DW_1
ioapic_mkstub gpio_dw_1 gpio_dw_isr_1
ioapic_mkstub gpio_dw_1 gpio_dw_isr_1 0
#endif /* CONFIG_GPIO_DW_1 */
#endif /* CONFIG_GPIO_DW */
#if defined(CONFIG_SHARED_IRQ)
#if CONFIG_SHARED_IRQ_0
ioapic_mkstub shared_irq_0 shared_irq_isr_0
ioapic_mkstub shared_irq_0 shared_irq_isr_0 0
#endif /* CONFIG_SHIRQ_0 */
#if CONFIG_SHARED_IRQ_1
ioapic_mkstub shared_irq_1 shared_irq_isr_1
ioapic_mkstub shared_irq_1 shared_irq_isr_1 0
#endif /* CONFIG_SHARED_IRQ_1 */
#endif /* CONFIG_SHARED_IRQ */
#if defined(CONFIG_SPI_INTEL)
#if defined(CONFIG_SPI_INTEL_PORT_0)
ioapic_mkstub spi_intel_irq_port_0 spi_intel_isr_0
ioapic_mkstub spi_intel_irq_port_0 spi_intel_isr_0 0
#endif /* CONFIG_SPI_INTEL_PORT_0 */
#if defined(CONFIG_SPI_INTEL_PORT_1)
ioapic_mkstub spi_intel_irq_port_1 spi_intel_isr_1
ioapic_mkstub spi_intel_irq_port_1 spi_intel_isr_1 0
#endif /* CONFIG_SPI_INTEL_PORT_1 */
#endif /* CONFIG_SPI_INTEL */

View file

@ -29,13 +29,13 @@
#if defined(CONFIG_I2C_DW_0)
#ifdef CONFIG_IOAPIC
ioapic_mkstub i2c_dw_0 i2c_dw_isr_0
ioapic_mkstub i2c_dw_0 i2c_dw_isr_0 0
#endif
#endif /* CONFIG_I2C_DW_0 */
#if defined(CONFIG_I2C_DW_1)
#ifdef CONFIG_IOAPIC
ioapic_mkstub i2c_dw_1 i2c_dw_isr_1
ioapic_mkstub i2c_dw_1 i2c_dw_isr_1 0
#endif
#endif /* CONFIG_I2C_DW_1 */

View file

@ -47,12 +47,12 @@ extern "C" {
#ifdef _ASMLANGUAGE
GTEXT(_ioapic_eoi)
.macro ioapic_mkstub device isr
.macro ioapic_mkstub device isr context
GTEXT(_\()\device\()_\()\isr\()_stub)
SECTION_FUNC(TEXT, _\()\device\()_\()\isr\()_stub)
call _IntEnt /* Inform kernel interrupt has begun */
pushl $0 /* Push dummy parameter */
pushl \context /* Push context parameter */
call \isr /* Call actual interrupt handler */
call _ioapic_eoi /* Inform ioapic interrupt is done */
addl $4, %esp /* Clean-up stack from push above */

View file

@ -57,12 +57,12 @@ extern "C" {
#ifdef _ASMLANGUAGE
GTEXT(_loapic_eoi)
.macro loapic_mkstub device isr
.macro loapic_mkstub device isr context
GTEXT(_\()\device\()_\()\isr\()_stub)
SECTION_FUNC(TEXT, _\()\device\()_\()\isr\()_stub)
call _IntEnt /* Inform kernel interrupt has begun */
pushl $0 /* Push dummy parameter */
pushl \context /* Push context parameter */
call \isr /* Call actual interrupt handler */
call _loapic_eoi /* Inform loapic interrupt is done */
addl $4, %esp /* Clean-up stack from push above */