diff --git a/bsp/qemu-vexpress-gemini/.config b/bsp/qemu-vexpress-gemini/.config index e0ed5d4128..470ded5b5f 100644 --- a/bsp/qemu-vexpress-gemini/.config +++ b/bsp/qemu-vexpress-gemini/.config @@ -81,7 +81,7 @@ CONFIG_RT_VER_NUM=0x40004 CONFIG_ARCH_ARM=y CONFIG_RT_USING_CPU_FFS=y CONFIG_ARCH_ARM_CORTEX_A=y -CONFIG_RT_NO_USING_GIC=y +CONFIG_RT_USING_GIC_V2=y CONFIG_ARCH_ARM_CORTEX_A9=y # diff --git a/bsp/qemu-vexpress-gemini/Kconfig b/bsp/qemu-vexpress-gemini/Kconfig index e86e369747..22c589f089 100644 --- a/bsp/qemu-vexpress-gemini/Kconfig +++ b/bsp/qemu-vexpress-gemini/Kconfig @@ -23,6 +23,7 @@ config SOC_VEXPRESS_GEMINI select ARCH_ARM_CORTEX_A9 select RT_USING_COMPONENTS_INIT # select RT_USING_USER_MAIN + select RT_USING_GIC_V2 default y source "$BSP_DIR/drivers/Kconfig" diff --git a/bsp/qemu-vexpress-gemini/cpu/cpu.c b/bsp/qemu-vexpress-gemini/cpu/cpu.c index 5f82671c1b..8eed86b02e 100644 --- a/bsp/qemu-vexpress-gemini/cpu/cpu.c +++ b/bsp/qemu-vexpress-gemini/cpu/cpu.c @@ -30,4 +30,21 @@ void rt_hw_cpu_shutdown() } } +#ifdef RT_USING_CPU_FFS +/** + * This function finds the first bit set (beginning with the least significant bit) + * in value and return the index of that bit. + * + * Bits are numbered starting at 1 (the least significant bit). A return value of + * zero from any of these functions means that the argument was zero. + * + * @return return the index of the first bit set. If value is 0, then this function + * shall return 0. + */ +int __rt_ffs(int value) +{ + return __builtin_ffs(value); +} +#endif + /*@}*/ diff --git a/bsp/qemu-vexpress-gemini/rtconfig.h b/bsp/qemu-vexpress-gemini/rtconfig.h index 02620be7d2..d162c7fe4e 100644 --- a/bsp/qemu-vexpress-gemini/rtconfig.h +++ b/bsp/qemu-vexpress-gemini/rtconfig.h @@ -51,7 +51,7 @@ #define ARCH_ARM #define RT_USING_CPU_FFS #define ARCH_ARM_CORTEX_A -#define RT_NO_USING_GIC +#define RT_USING_GIC_V2 #define ARCH_ARM_CORTEX_A9 /* RT-Thread Components */