Ver Fonte

[fix]:修复GICv2、GICv3中断触发模式设置无效的问题 (#7358)

wangqinglin há 2 anos atrás
pai
commit
fbc1d6f4fd

+ 1 - 1
libcpu/aarch64/common/gic.c

@@ -195,7 +195,7 @@ void arm_gic_set_configuration(rt_uint64_t index, int irq, uint32_t config)
     shift = (irq % 16U) << 1U;
 
     icfgr &= (~(3U << shift));
-    icfgr |= (config << shift);
+    icfgr |= (config << (shift + 1));
 
     GIC_DIST_CONFIG(_gic_table[index].dist_hw_base, irq) = icfgr;
 }

+ 1 - 1
libcpu/aarch64/common/gicv3.c

@@ -308,7 +308,7 @@ void arm_gic_set_configuration(rt_uint64_t index, int irq, rt_uint32_t config)
     shift = (irq % 16) << 1;
 
     icfgr &= (~(3 << shift));
-    icfgr |= (config << shift);
+    icfgr |= (config << (shift + 1));
 
     GIC_DIST_CONFIG(_gic_table[index].dist_hw_base, irq) = icfgr;
 }

+ 1 - 1
libcpu/arm/cortex-a/gic.c

@@ -193,7 +193,7 @@ void arm_gic_set_configuration(rt_uint32_t index, int irq, rt_uint32_t config)
     shift = (irq % 16U) << 1U;
 
     icfgr &= (~(3U << shift));
-    icfgr |= (config << shift);
+    icfgr |= (config << (shift + 1));
 
     GIC_DIST_CONFIG(_gic_table[index].dist_hw_base, irq) = icfgr;
 }

+ 1 - 1
libcpu/arm/cortex-a/gicv3.c

@@ -201,7 +201,7 @@ void arm_gic_set_configuration(rt_uint32_t index, int irq, rt_uint32_t config)
     shift = (irq % 16U) << 1U;
 
     icfgr &= (~(3U << shift));
-    icfgr |= (config << shift);
+    icfgr |= (config << (shift + 1));
 
     GIC_DIST_CONFIG(_gic_table[index].dist_hw_base, irq) = icfgr;
 }