[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 08/14] ARM: s5pc210: Boot secondary CPU.
From: |
Evgeny Voevodin |
Subject: |
[Qemu-devel] [PATCH 08/14] ARM: s5pc210: Boot secondary CPU. |
Date: |
Wed, 07 Dec 2011 13:46:59 +0400 |
Signed-off-by: Evgeny Voevodin <address@hidden>
---
hw/s5pc210.c | 26 +++++++++++++++++++++++++-
1 files changed, 25 insertions(+), 1 deletions(-)
diff --git a/hw/s5pc210.c b/hw/s5pc210.c
index eabe3b1..90858e9 100644
--- a/hw/s5pc210.c
+++ b/hw/s5pc210.c
@@ -97,6 +97,12 @@
#define S5PC210_BASE_BOOT_ADDR S5PC210_DRAM0_BASE_ADDR
+/* Secondary CPU startup code is in IROM memory */
+#define S5PC210_SMP_BOOT_ADDR S5PC210_IROM_BASE_ADDR
+
+/* Secondary CPU polling address to get loader start from */
+#define S5PC210_SECOND_CPU_BOOTREG 0x10020814
+
static struct arm_boot_info s5pc210_binfo = {
.loader_start = S5PC210_BASE_BOOT_ADDR,
};
@@ -213,6 +219,8 @@ static void s5pc210_init(ram_addr_t ram_size,
MemoryRegion *irom_alias_mem = g_new(MemoryRegion, 1);
MemoryRegion *dram0_mem = g_new(MemoryRegion, 1);
MemoryRegion *dram1_mem = NULL;
+ MemoryRegion *hack_mem = g_new(MemoryRegion, 1);
+ MemoryRegion *bootreg_mem = g_new(MemoryRegion, 1);
S5pc210Irq *irqs;
qemu_irq *irq_table;
qemu_irq *irqp;
@@ -225,9 +233,11 @@ static void s5pc210_init(ram_addr_t ram_size,
switch (board_type) {
case BOARD_S5PC210_NURI:
s5pc210_binfo.board_id = MACH_NURI_ID;
+ s5pc210_binfo.smp_bootreg_addr = S5PC210_SECOND_CPU_BOOTREG;
break;
case BOARD_S5PC210_SMDKC210:
s5pc210_binfo.board_id = MACH_SMDKC210_ID;
+ s5pc210_binfo.smp_bootreg_addr = S5PC210_SECOND_CPU_BOOTREG;
break;
default:
break;
@@ -353,6 +363,20 @@ static void s5pc210_init(ram_addr_t ram_size,
memory_region_add_subregion(system_mem, S5PC210_DRAM0_BASE_ADDR,
dram0_mem);
+ /*
+ * Secondary CPU startup code will be placed here.
+ */
+ memory_region_init_ram(hack_mem, NULL, "s5pc210.hack", 0x1000);
+ memory_region_add_subregion(system_mem, S5PC210_SMP_BOOT_ADDR,
+ hack_mem);
+
+ /*
+ * Hack: Map SECOND_CPU_BOOTREG, because it is in PMU USER5 register.
+ */
+ memory_region_init_ram(bootreg_mem, NULL, "s5pc210.bootreg", 0x4);
+ memory_region_add_subregion(system_mem, S5PC210_SECOND_CPU_BOOTREG,
+ bootreg_mem);
+
/* CMU */
sysbus_create_simple("s5pc210.cmu", S5PC210_CMU_BASE_ADDR, NULL);
@@ -429,7 +453,7 @@ static void s5pc210_init(ram_addr_t ram_size,
s5pc210_binfo.kernel_filename = kernel_filename;
s5pc210_binfo.initrd_filename = initrd_filename;
s5pc210_binfo.kernel_cmdline = kernel_cmdline;
-
+ s5pc210_binfo.smp_priv_base = S5PC210_SMP_PRIVATE_BASE_ADDR;
arm_load_kernel(first_cpu, &s5pc210_binfo);
}
--
1.7.4.1
- [Qemu-devel] [PATCH 02/14] hw/sysbus.h: Increase maximum number of device IRQs., (continued)
- [Qemu-devel] [PATCH 02/14] hw/sysbus.h: Increase maximum number of device IRQs., Evgeny Voevodin, 2011/12/07
- [Qemu-devel] [PATCH 05/14] hw/arm_boot.c: Add new secondary CPU bootloader., Evgeny Voevodin, 2011/12/07
- [Qemu-devel] [PATCH 04/14] ARM: s5pc210: PWM support., Evgeny Voevodin, 2011/12/07
- [Qemu-devel] [PATCH 01/14] ARM: s5pc210: Basic support of s5pc210 boards, Evgeny Voevodin, 2011/12/07
- [Qemu-devel] [PATCH 03/14] ARM: s5pc210: IRQ subsystem support., Evgeny Voevodin, 2011/12/07
- [Qemu-devel] [PATCH 09/14] hw/lan9118.c: Basic byte/word/long access support., Evgeny Voevodin, 2011/12/07
- [Qemu-devel] [PATCH 08/14] ARM: s5pc210: Boot secondary CPU.,
Evgeny Voevodin <=
- [Qemu-devel] [PATCH 12/14] SD card: add query function to check wether SD card currently ready to recieve data Before executing data transfer to card, we must check that previously issued command wasn't a simple query command (for ex. CMD13), which doesn't require data transfer. Currently, we only can aquire information about whether SD card is in sending data state or not. This patch allows us to query wether previous command was data write command and it was successfully accepted by card (meaning that SD card in recieving data state)., Evgeny Voevodin, 2011/12/07
- [Qemu-devel] [PATCH 06/14] hw/arm_gic.c: lower IRQ only on changing of enable bit., Evgeny Voevodin, 2011/12/07
- [Qemu-devel] [PATCH 14/14] s5pc210: Switch to sysbus_init_mmio., Evgeny Voevodin, 2011/12/07
- [Qemu-devel] [PATCH 07/14] ARM: s5pc210: MCT support., Evgeny Voevodin, 2011/12/07
- [Qemu-devel] [PATCH 10/14] hw/s5pc210.c: Add lan9118 support to SMDK board., Evgeny Voevodin, 2011/12/07
- [Qemu-devel] [PATCH 11/14] ARM: s5pc210: added s5pc210 display controller device (FIMD), Evgeny Voevodin, 2011/12/07
- [Qemu-devel] [PATCH 13/14] ARM: s5pc210: added SD/MMC host controller (ver. 2.0 compliant) implementation, Evgeny Voevodin, 2011/12/07
- Re: [Qemu-devel] [PATCH 00/14] ARM: Samsung S5PC210-based boards support., Peter Maydell, 2011/12/07