Skip to content

Commit 9bede3c

Browse files
committed
arch/risc-v/rp23xx-rv: add smp support
Add SMP support to rp23xx risc-v port Signed-off-by: Serg Podtynnyi <serg@podtynnyi.com>
1 parent 8b87072 commit 9bede3c

19 files changed

Lines changed: 412 additions & 252 deletions

arch/risc-v/Kconfig

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,6 @@ config ARCH_CHIP_RP23XX_RV
454454
select ONESHOT_COUNT
455455
select ONESHOT_FAST_DIVISION
456456
select ALARM_ARCH
457-
select ARCH_HAVE_I2CRESET
458457
select ARCH_BOARD_COMMON
459458
---help---
460459
Raspberry Pi RP23XX architectures (RISC-V dual Hazard3).

arch/risc-v/src/rp23xx-rv/Make.defs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222

2323
include common/Make.defs
2424

25+
ifeq ($(CONFIG_SMP),y)
26+
CMN_CSRCS := $(filter-out riscv_smpcall.c riscv_cpustart.c, $(CMN_CSRCS))
27+
endif
28+
2529
# Specify our HEAD assembly file. This will be linked as
2630
# the first object file, so it will appear at address 0
2731
HEAD_ASRC = rp23xx_head.S
@@ -44,7 +48,6 @@ CHIP_CSRCS += rp23xx_pll.c
4448
ifeq ($(CONFIG_SMP),y)
4549
CHIP_CSRCS += rp23xx_cpustart.c
4650
CHIP_CSRCS += rp23xx_smpcall.c
47-
CHIP_CSRCS += rp23xx_cpuidlestack.c
4851
endif
4952

5053
ifeq ($(CONFIG_RP23XX_RV_DMAC),y)

arch/risc-v/src/rp23xx-rv/chip.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,23 @@
3737

3838
#include <arch/rp23xx-rv/chip.h>
3939

40+
#include "riscv_internal.h"
41+
4042
/****************************************************************************
4143
* Macro Definitions
4244
****************************************************************************/
4345

4446
#ifdef __ASSEMBLY__
4547

48+
#if defined(CONFIG_SMP) && CONFIG_ARCH_INTERRUPTSTACK > 15
49+
.macro setintstack tmp0, tmp1
50+
up_cpu_index \tmp0
51+
li \tmp1, STACKFRAME_ALIGN_DOWN(CONFIG_ARCH_INTERRUPTSTACK)
52+
mul \tmp1, \tmp0, \tmp1
53+
la \tmp0, g_intstacktop
54+
sub sp, \tmp0, \tmp1
55+
.endm
56+
#endif /* CONFIG_SMP && CONFIG_ARCH_INTERRUPTSTACK > 15 */
57+
4658
#endif /* __ASSEMBLY__ */
4759
#endif /* __ARCH_RISCV_SRC_RP23XX_RV_CHIP_H */

arch/risc-v/src/rp23xx-rv/hardware/rp23xx_hazard3.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,13 @@
2727
* Included Files
2828
****************************************************************************/
2929

30-
#include "hardware/rp23xx_memorymap.h"
30+
#include "rp23xx_memorymap.h"
3131

3232
/****************************************************************************
3333
* Pre-processor Definitions
3434
****************************************************************************/
35+
#define hazard3_block() __asm__ volatile ("slt x0, x0, x0" ::: "memory")
36+
#define hazard3_unblock() __asm__ volatile ("slt x0, x0, x1" ::: "memory")
3537

3638
#define hazard3_irqarray_read(csr, index) (READ_AND_SET_CSR(csr, (index)) >> 16)
3739
#define hazard3_irqarray_write(csr, index, data) (WRITE_CSR(csr, (index) | ((uint32_t)(data) << 16)))

arch/risc-v/src/rp23xx-rv/hardware/rp23xx_memorymap.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@
2626
* Included Files
2727
****************************************************************************/
2828

29-
#include "hardware/rp23xx_memorymap.h"
30-
3129
/****************************************************************************
3230
* Pre-processor Definitions
3331
****************************************************************************/

arch/risc-v/src/rp23xx-rv/hardware/rp23xx_psm.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
* Included Files
2828
****************************************************************************/
2929

30-
#include "hardware/rp23xx_memorymap.h"
30+
#include "rp23xx_memorymap.h"
3131

3232
/****************************************************************************
3333
* Pre-processor Definitions

arch/risc-v/src/rp23xx-rv/hardware/rp23xx_resets.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
* Included Files
2828
****************************************************************************/
2929

30-
#include "hardware/rp23xx_memorymap.h"
30+
#include "rp23xx_memorymap.h"
3131

3232
/****************************************************************************
3333
* Pre-processor Definitions

arch/risc-v/src/rp23xx-rv/hardware/rp23xx_sio.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
* Included Files
2828
****************************************************************************/
2929

30-
#include "hardware/rp23xx_memorymap.h"
30+
#include "rp23xx_memorymap.h"
3131

3232
/****************************************************************************
3333
* Pre-processor Definitions

arch/risc-v/src/rp23xx-rv/hardware/rp23xx_usbctrl_dpsram.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
* Included Files
2828
****************************************************************************/
2929

30-
#include "hardware/rp23xx_memorymap.h"
30+
#include "rp23xx_memorymap.h"
3131

3232
/****************************************************************************
3333
* Pre-processor Definitions

arch/risc-v/src/rp23xx-rv/hardware/rp23xx_usbctrl_regs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
* Included Files
2828
****************************************************************************/
2929

30-
#include "hardware/rp23xx_memorymap.h"
30+
#include "rp23xx_memorymap.h"
3131

3232
/****************************************************************************
3333
* Pre-processor Definitions

0 commit comments

Comments
 (0)