qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Song Gao <gaosong@loongson.cn>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, Song Gao <gaosong@loongson.cn>
Subject: [PULL 04/17] hw/loongarch: Add init_cmdline
Date: Thu,  7 Mar 2024 22:51:54 +0800	[thread overview]
Message-ID: <20240307145207.247913-5-gaosong@loongson.cn> (raw)
In-Reply-To: <20240307145207.247913-1-gaosong@loongson.cn>

Add init_cmline and set boot_info->a0, a1

Signed-off-by: Song Gao <gaosong@loongson.cn>
Message-Id: <20240301093839.663947-5-gaosong@loongson.cn>
---
 hw/loongarch/boot.c         | 19 +++++++++++++++++++
 include/hw/loongarch/virt.h |  2 ++
 target/loongarch/cpu.h      |  2 ++
 3 files changed, 23 insertions(+)

diff --git a/hw/loongarch/boot.c b/hw/loongarch/boot.c
index 2f398260af..897d4636b6 100644
--- a/hw/loongarch/boot.c
+++ b/hw/loongarch/boot.c
@@ -62,6 +62,16 @@ static const unsigned int slave_boot_code[] = {
     0x4c000020,   /* jirl       $r0,$r1,0           */
 };
 
+static void init_cmdline(struct loongarch_boot_info *info, void *p, void *start)
+{
+    hwaddr cmdline_addr = (hwaddr)p - (hwaddr)start;
+
+    info->a0 = 1;
+    info->a1 = cmdline_addr;
+
+    memcpy(p, info->kernel_cmdline, COMMAND_LINE_SIZE);
+}
+
 static uint64_t cpu_loongarch_virt_to_phys(void *opaque, uint64_t addr)
 {
     return addr & MAKE_64BIT_MASK(0, TARGET_PHYS_ADDR_SPACE_BITS);
@@ -121,6 +131,10 @@ static void reset_load_elf(void *opaque)
 
     cpu_reset(CPU(cpu));
     if (env->load_elf) {
+	if (cpu == LOONGARCH_CPU(first_cpu)) {
+            env->gpr[4] = env->boot_info->a0;
+            env->gpr[5] = env->boot_info->a1;
+        }
         cpu_set_pc(CPU(cpu), env->elf_address);
     }
 }
@@ -160,8 +174,13 @@ static void loongarch_firmware_boot(LoongArchMachineState *lams,
 
 static void init_boot_rom(struct loongarch_boot_info *info, void *p)
 {
+    void *start = p;
+
     memcpy(p, &slave_boot_code, sizeof(slave_boot_code));
     p += sizeof(slave_boot_code);
+
+    init_cmdline(info, p, start);
+    p += COMMAND_LINE_SIZE;
 }
 
 static void loongarch_direct_kernel_boot(struct loongarch_boot_info *info)
diff --git a/include/hw/loongarch/virt.h b/include/hw/loongarch/virt.h
index cf2f2bfb19..d7a074d69f 100644
--- a/include/hw/loongarch/virt.h
+++ b/include/hw/loongarch/virt.h
@@ -33,6 +33,8 @@
 #define VIRT_GED_MEM_ADDR       (VIRT_GED_EVT_ADDR + ACPI_GED_EVT_SEL_LEN)
 #define VIRT_GED_REG_ADDR       (VIRT_GED_MEM_ADDR + MEMORY_HOTPLUG_IO_LEN)
 
+#define COMMAND_LINE_SIZE       512
+
 struct LoongArchMachineState {
     /*< private >*/
     MachineState parent_obj;
diff --git a/target/loongarch/cpu.h b/target/loongarch/cpu.h
index ec37579fd6..ce02ef3979 100644
--- a/target/loongarch/cpu.h
+++ b/target/loongarch/cpu.h
@@ -361,6 +361,8 @@ typedef struct CPUArchState {
     uint32_t mp_state;
     /* Store ipistate to access from this struct */
     DeviceState *ipistate;
+
+    struct loongarch_boot_info *boot_info;
 #endif
 } CPULoongArchState;
 
-- 
2.34.1



  parent reply	other threads:[~2024-03-07 14:54 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-07 14:51 [PULL 00/17] loongarch-to-apply queue Song Gao
2024-03-07 14:51 ` [PULL 01/17] hw/loongarch: Move boot fucntions to boot.c Song Gao
2024-03-07 14:51 ` [PULL 02/17] hw/loongarch: Add load initrd Song Gao
2024-03-07 14:51 ` [PULL 03/17] hw/loongarch: Add slave cpu boot_code Song Gao
2024-03-07 14:51 ` Song Gao [this message]
2024-03-07 14:51 ` [PULL 05/17] hw/loongarch: Init efi_system_table Song Gao
2024-03-07 14:51 ` [PULL 06/17] hw/loongarch: Init efi_boot_memmap table Song Gao
2024-03-07 14:51 ` [PULL 07/17] hw/loongarch: Init efi_initrd table Song Gao
2024-03-07 14:51 ` [PULL 08/17] hw/loongarch: Init efi_fdt table Song Gao
2024-03-07 14:51 ` [PULL 09/17] hw/loongarch: Fix fdt memory node wrong 'reg' Song Gao
2024-03-07 14:52 ` [PULL 10/17] hw/loongarch: fdt adds cpu interrupt controller node Song Gao
2024-03-07 14:52 ` [PULL 11/17] hw/loongarch: fdt adds Extend I/O Interrupt Controller Song Gao
2024-03-07 14:52 ` [PULL 12/17] hw/loongarch: fdt adds pch_pic Controller Song Gao
2024-03-07 14:52 ` [PULL 13/17] hw/loongarch: fdt adds pch_msi Controller Song Gao
2024-03-07 14:52 ` [PULL 14/17] hw/loongarch: fdt adds pcie irq_map node Song Gao
2024-03-07 14:52 ` [PULL 15/17] hw/loongarch: fdt remove unused irqchip node Song Gao
2024-03-07 15:22 ` [PULL 00/17] loongarch-to-apply queue gaosong
2024-03-07 15:23 ` Peter Maydell
2024-03-07 15:25   ` Peter Maydell
  -- strict thread matches above, loose matches on Subject: below --
2024-04-28  8:51 Song Gao
2024-04-28  8:51 ` [PULL 04/17] hw/loongarch: Add init_cmdline Song Gao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240307145207.247913-5-gaosong@loongson.cn \
    --to=gaosong@loongson.cn \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).