qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [Bug 1733720] Re: raspi2 with multiple CPU's #1


From: Ken Dickey
Subject: [Qemu-devel] [Bug 1733720] Re: raspi2 with multiple CPU's #1
Date: Wed, 22 Nov 2017 05:20:55 -0000

NOT A BUG

Reviewed the code and found the problem.

asm volatile("mrc p15, 0, %[id], c0, c0, 0 @ read MIDR\n\t" ...

I miscopied the code above; MIDR should have been MIPDR ( 5 )

I now get:

Linux:armv7l: ~/Downloads/RaspiTest/BareBones >>> ./qemu.sh 
0H312ello, kernel World!

Sorry about the bogus report!
-KenD

** Changed in: qemu
       Status: New => Invalid

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1733720

Title:
  raspi2 with multiple CPU's #1

Status in QEMU:
  Invalid

Bug description:
  Greetings,

  I am running a small program for raspi2 (from
  http://wiki.osdev.org/ARM_RaspberryPi_Tutorial_C).

  This code writes "Hello World", but the output ir repeated 4 times.

  My thought was that this is emulating a 4 cpu core system.

  However, when I check the MPIDR registed for CPU number, it always
  returns 1.

  I git cloned github.com/qemu/qemu.git, made & installed on Acer ARM
  CB5-311 under Crouton/ubuntu.

  
  ./qemu.sh 
  1111

  Linux:armv7l: ~/Downloads/RaspiTest/BareBones >>> uname -a
  Linux localhost 3.10.18 #1 SMP Mon Nov 13 16:34:10 PST 2017 armv7l armv7l 
armv7l GNU/Linux

  Linux:armv7l: ~/Downloads/RaspiTest/BareBones >>> qemu-system-arm --version
  QEMU emulator version 2.10.91 (v2.11.0-rc1-dirty)
  Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers

  =====
  static inline uint32_t read_mpdir(void)
  {
    uint32_t id;
    
    asm volatile("mrc p15, 0, %[id], c0, c0, 0 @ read MIDR\n\t"
               : [id] "=r" (id));
    return id;
  }
  ======
  void kernel_main(uint32_t r0, uint32_t r1, uint32_t atags)
  {
        // Declare as unused
        (void) r0;
        (void) r1;
        (void) atags;

          uint32_t cpu_id;

          cpu_id = read_mpdir() & 0x03;

          uart_putc( "01234"[cpu_id] ); /* output is "1111" */

          if (cpu_id == 0) { /* code never executes 8^( */ }

  ====== qemu.sh
  qemu-system-arm -m 256 -M raspi2 -no-reboot -serial stdio  -kernel myos.elf

  Thanks much,
  -KenD

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1733720/+subscriptions



reply via email to

[Prev in Thread] Current Thread [Next in Thread]