[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 45/46] hw/arm/raspi: Extract the cores count from the board revisi
From: |
Peter Maydell |
Subject: |
[PULL 45/46] hw/arm/raspi: Extract the cores count from the board revision |
Date: |
Thu, 13 Feb 2020 14:41:44 +0000 |
From: Philippe Mathieu-Daudé <address@hidden>
The count of ARM cores is encoded in the board revision. Add a
helper to extract the number of cores, and use it. This will be
helpful when we add the Raspi0/1 that have a single core.
Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
Message-id: address@hidden
Reviewed-by: Peter Maydell <address@hidden>
[PMM: tweaked commit message as suggested by Igor]
Signed-off-by: Peter Maydell <address@hidden>
---
hw/arm/raspi.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c
index bee6ca0a086..90ad9b81158 100644
--- a/hw/arm/raspi.c
+++ b/hw/arm/raspi.c
@@ -101,6 +101,21 @@ static const char *board_soc_type(uint32_t board_rev)
return soc_types[proc_id];
}
+static int cores_count(uint32_t board_rev)
+{
+ static const int soc_cores_count[] = {
+ 0, BCM283X_NCPUS, BCM283X_NCPUS,
+ };
+ int proc_id = board_processor_id(board_rev);
+
+ if (proc_id >= ARRAY_SIZE(soc_cores_count) || !soc_cores_count[proc_id]) {
+ error_report("Unsupported processor id '%d' (board revision: 0x%x)",
+ proc_id, board_rev);
+ exit(1);
+ }
+ return soc_cores_count[proc_id];
+}
+
static const char *board_type(uint32_t board_rev)
{
static const char *types[] = {
@@ -307,9 +322,7 @@ static void raspi_machine_class_init(ObjectClass *oc, void
*data)
mc->no_parallel = 1;
mc->no_floppy = 1;
mc->no_cdrom = 1;
- mc->max_cpus = BCM283X_NCPUS;
- mc->min_cpus = BCM283X_NCPUS;
- mc->default_cpus = BCM283X_NCPUS;
+ mc->default_cpus = mc->min_cpus = mc->max_cpus = cores_count(board_rev);
mc->default_ram_size = board_ram_size(board_rev);
if (board_version(board_rev) == 2) {
mc->ignore_memory_transaction_failures = true;
--
2.20.1
- [PULL 38/46] hw/arm/raspi: Trivial code movement, (continued)
- [PULL 38/46] hw/arm/raspi: Trivial code movement, Peter Maydell, 2020/02/13
- [PULL 33/46] hw/arm/raspi: Use BCM2708 machine type with pre Device Tree kernels, Peter Maydell, 2020/02/13
- [PULL 34/46] hw/arm/raspi: Correct the board descriptions, Peter Maydell, 2020/02/13
- [PULL 37/46] hw/arm/raspi: Extract the processor type from the board revision, Peter Maydell, 2020/02/13
- [PULL 35/46] hw/arm/raspi: Extract the version from the board revision, Peter Maydell, 2020/02/13
- [PULL 36/46] hw/arm/raspi: Extract the RAM size from the board revision, Peter Maydell, 2020/02/13
- [PULL 42/46] hw/arm/raspi: Set default RAM size to size encoded in board revision, Peter Maydell, 2020/02/13
- [PULL 44/46] hw/arm/raspi: Use a unique raspi_machine_class_init() method, Peter Maydell, 2020/02/13
- [PULL 41/46] hw/arm/raspi: Let class_init() directly call raspi_machine_init(), Peter Maydell, 2020/02/13
- [PULL 43/46] hw/arm/raspi: Extract the board model from the board revision, Peter Maydell, 2020/02/13
- [PULL 45/46] hw/arm/raspi: Extract the cores count from the board revision,
Peter Maydell <=
- [PULL 39/46] hw/arm/raspi: Make machines children of abstract RaspiMachineClass, Peter Maydell, 2020/02/13
- [PULL 40/46] hw/arm/raspi: Make board_rev a field of RaspiMachineClass, Peter Maydell, 2020/02/13
- [PULL 46/46] target/arm: Implement ARMv8.1-VMID16 extension, Peter Maydell, 2020/02/13
- Re: [PULL 00/46] target-arm queue, Peter Maydell, 2020/02/14