qemu-e2k/target-lm32
Andreas Färber 6e42be7cd1 cpu: Drop unnecessary dynamic casts in *_env_get_cpu()
A transition from CPUFooState to FooCPU can be considered safe,
just like FooCPU::env access in the opposite direction.
The only benefit of the FOO_CPU() casts would be protection against
bogus CPUFooState pointers, but then surrounding code would likely
break, too.

This should slightly improve interrupt etc. performance when going from
CPUFooState to FooCPU.
For any additional CPU() casts see 3556c233d9
(qom: allow turning cast debugging off).

Reported-by: Anthony Liguori <aliguori@us.ibm.com>
Acked-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Andreas Färber <afaerber@suse.de>
2013-07-09 21:20:28 +02:00
..
cpu-qom.h cpu: Drop unnecessary dynamic casts in *_env_get_cpu() 2013-07-09 21:20:28 +02:00
cpu.c cpu: Change qemu_init_vcpu() argument to CPUState 2013-06-28 13:25:13 +02:00
cpu.h linux-user: Move cpu_clone_regs() and cpu_set_tls() into linux-user 2013-07-09 21:20:28 +02:00
helper.c target-lm32: fix debug memory access 2013-03-18 19:40:34 +01:00
helper.h exec: move include files to include/exec/ 2012-12-19 08:31:31 +01:00
machine.c target-lm32: Update VMStateDescription to LM32CPU 2013-03-12 10:35:55 +01:00
Makefile.objs
op_helper.c hw: move headers to include/ 2013-04-08 18:13:10 +02:00
README
TODO
translate.c cpu: Turn cpu_dump_{state,statistics}() into CPUState hooks 2013-06-28 13:25:12 +02:00

LatticeMico32 target
--------------------

General
-------
All opcodes including the JUART CSRs are supported.


JTAG UART
---------
JTAG UART is routed to a serial console device. For the current boards it
is the second one. Ie to enable it in the qemu virtual console window use
the following command line parameters:
  -serial vc -serial vc
This will make serial0 (the lm32_uart) and serial1 (the JTAG UART)
available as virtual consoles.


Programmatically terminate the emulator
----------------------------------------
Originally neither the LatticeMico32 nor its peripherals support a
mechanism to shut down the machine. Emulation aware programs can write to a
to a special register within the system control block to shut down the
virtual machine.  For more details see hw/lm32_sys.c. The lm32-evr is the
first BSP which instantiate this model. A (32 bit) write to 0xfff0000
causes a vm shutdown.


Special instructions
--------------------
The translation recognizes one special instruction to halt the cpu:
  and r0, r0, r0
On real hardware this instruction is a nop. It is not used by GCC and
should (hopefully) not be used within hand-crafted assembly.
Insert this instruction in your idle loop to reduce the cpu load on the
host.


Ignoring the MSB of the address bus
-----------------------------------
Some SoC ignores the MSB on the address bus. Thus creating a shadow memory
area. As a general rule, 0x00000000-0x7fffffff is cached, whereas
0x80000000-0xffffffff is not cached and used to access IO devices. This
behaviour can be enabled with:
  cpu_lm32_set_phys_msb_ignore(env, 1);