From fbc1d6f4fdae5ffc8faf5408b95c19e01a4dc4ac Mon Sep 17 00:00:00 2001 From: wangqinglin <53550140+HelloByeAll@users.noreply.github.com> Date: Mon, 24 Apr 2023 17:06:31 +0800 Subject: [PATCH] =?UTF-8?q?[fix]:=E4=BF=AE=E5=A4=8DGICv2=E3=80=81GICv3?= =?UTF-8?q?=E4=B8=AD=E6=96=AD=E8=A7=A6=E5=8F=91=E6=A8=A1=E5=BC=8F=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E6=97=A0=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98=20(#7358?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libcpu/aarch64/common/gic.c | 2 +- libcpu/aarch64/common/gicv3.c | 2 +- libcpu/arm/cortex-a/gic.c | 2 +- libcpu/arm/cortex-a/gicv3.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libcpu/aarch64/common/gic.c b/libcpu/aarch64/common/gic.c index 3cb9052cfc..498cc9ea00 100644 --- a/libcpu/aarch64/common/gic.c +++ b/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; } diff --git a/libcpu/aarch64/common/gicv3.c b/libcpu/aarch64/common/gicv3.c index eb7c8f2f6e..18fdcddc7f 100644 --- a/libcpu/aarch64/common/gicv3.c +++ b/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; } diff --git a/libcpu/arm/cortex-a/gic.c b/libcpu/arm/cortex-a/gic.c index e65bb5413e..072ddc302b 100644 --- a/libcpu/arm/cortex-a/gic.c +++ b/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; } diff --git a/libcpu/arm/cortex-a/gicv3.c b/libcpu/arm/cortex-a/gicv3.c index 5039b0c5a1..7d0b9f28f5 100644 --- a/libcpu/arm/cortex-a/gicv3.c +++ b/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; }