---
inmates/demos/arm/gic-demo.c | 2 +-
inmates/lib/arm-common/gic.c | 4 ++--
inmates/lib/arm-common/include/inmate.h | 2 +-
inmates/lib/arm/include/arch/gic.h | 4 +---
inmates/lib/arm64/include/arch/gic.h | 2 +-
5 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/inmates/demos/arm/gic-demo.c b/inmates/demos/arm/gic-demo.c
index 83284374..43e01e93 100644
--- a/inmates/demos/arm/gic-demo.c
+++ b/inmates/demos/arm/gic-demo.c
@@ -57,7 +57,7 @@ static void handle_IRQ(unsigned int irqn)
void inmate_main(void *irq_stack)
{
printk("Initializing the GIC...\n");
- gic_setup(handle_IRQ);
+ gic_setup(handle_IRQ, irq_stack);
gic_enable_irq(TIMER_IRQ);
printk("Initializing the timer...\n");
diff --git a/inmates/lib/arm-common/gic.c b/inmates/lib/arm-common/gic.c
index 059a6b6e..475a38b6 100644
--- a/inmates/lib/arm-common/gic.c
+++ b/inmates/lib/arm-common/gic.c
@@ -60,7 +60,7 @@ void vector_irq(void)
}
}
-void gic_setup(irq_handler_t handler)
+void gic_setup(irq_handler_t handler, void *irq_stack)
{
#if GIC_VERSION == 2
gic = gic_v2;
@@ -74,7 +74,7 @@ void gic_setup(irq_handler_t handler)
irq_handler = handler;
- gic_setup_irq_stack();
+ gic_setup_irq_stack(irq_stack);
}
void gic_enable_irq(unsigned int irq)
diff --git a/inmates/lib/arm-common/include/inmate.h
b/inmates/lib/arm-common/include/inmate.h
index 19730a9d..da0d4050 100644
--- a/inmates/lib/arm-common/include/inmate.h
+++ b/inmates/lib/arm-common/include/inmate.h
@@ -82,7 +82,7 @@ static inline void cpu_relax(void)
}
typedef void (*irq_handler_t)(unsigned int);
-void gic_setup(irq_handler_t handler);
+void gic_setup(irq_handler_t handler, void *irq_stack);
void gic_enable_irq(unsigned int irq);
unsigned long timer_get_frequency(void);
diff --git a/inmates/lib/arm/include/arch/gic.h
b/inmates/lib/arm/include/arch/gic.h
index 7b282213..bec10bb0 100644
--- a/inmates/lib/arm/include/arch/gic.h
+++ b/inmates/lib/arm/include/arch/gic.h
@@ -38,10 +38,8 @@
#ifndef __ASSEMBLY__
-static inline void gic_setup_irq_stack(void)
+static inline void gic_setup_irq_stack(void *irq_stack)
{
- static __attribute__((aligned(0x1000))) u32 irq_stack[1024];
-
asm volatile (".arch_extension virt\n");
asm volatile ("msr SP_irq, %0\n" : : "r" (irq_stack));
asm volatile ("cpsie i\n");
diff --git a/inmates/lib/arm64/include/arch/gic.h
b/inmates/lib/arm64/include/arch/gic.h
index 80720664..aafc1667 100644
--- a/inmates/lib/arm64/include/arch/gic.h
+++ b/inmates/lib/arm64/include/arch/gic.h
@@ -36,4 +36,4 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#define gic_setup_irq_stack()
+#define gic_setup_irq_stack(irq_stack)
--
2.14.1
--
You received this message because you are subscribed to the Google Groups
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.