Commit 0d78f544dede6b3cb16eda8fd3462fb0aa001a18
1 parent
671880e6
Add R2D-PLUS support, by Magnus Damm.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3268 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
4 changed files
with
69 additions
and
1 deletions
Makefile.target
@@ -475,7 +475,7 @@ VL_OBJS+= omap.o omap_lcdc.o omap1_clk.o omap_mmc.o palm.o ecc.o | @@ -475,7 +475,7 @@ VL_OBJS+= omap.o omap_lcdc.o omap1_clk.o omap_mmc.o palm.o ecc.o | ||
475 | CPPFLAGS += -DHAS_AUDIO | 475 | CPPFLAGS += -DHAS_AUDIO |
476 | endif | 476 | endif |
477 | ifeq ($(TARGET_BASE_ARCH), sh4) | 477 | ifeq ($(TARGET_BASE_ARCH), sh4) |
478 | -VL_OBJS+= shix.o sh7750.o sh7750_regnames.o tc58128.o | 478 | +VL_OBJS+= shix.o r2d.o sh7750.o sh7750_regnames.o tc58128.o |
479 | endif | 479 | endif |
480 | ifeq ($(TARGET_BASE_ARCH), m68k) | 480 | ifeq ($(TARGET_BASE_ARCH), m68k) |
481 | VL_OBJS+= an5206.o mcf5206.o ptimer.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o | 481 | VL_OBJS+= an5206.o mcf5206.o ptimer.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o |
hw/r2d.c
0 → 100644
1 | +/* | ||
2 | + * Renesas SH7751R R2D-PLUS emulation | ||
3 | + * | ||
4 | + * Copyright (c) 2007 Magnus Damm | ||
5 | + * | ||
6 | + * Permission is hereby granted, free of charge, to any person obtaining a copy | ||
7 | + * of this software and associated documentation files (the "Software"), to deal | ||
8 | + * in the Software without restriction, including without limitation the rights | ||
9 | + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
10 | + * copies of the Software, and to permit persons to whom the Software is | ||
11 | + * furnished to do so, subject to the following conditions: | ||
12 | + * | ||
13 | + * The above copyright notice and this permission notice shall be included in | ||
14 | + * all copies or substantial portions of the Software. | ||
15 | + * | ||
16 | + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
17 | + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
18 | + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
19 | + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
20 | + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
21 | + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
22 | + * THE SOFTWARE. | ||
23 | + */ | ||
24 | + | ||
25 | +#include "vl.h" | ||
26 | + | ||
27 | +#define SDRAM_BASE 0x0c000000 /* Physical location of SDRAM: Area 3 */ | ||
28 | +#define SDRAM_SIZE 0x04000000 | ||
29 | + | ||
30 | +void r2d_init(int ram_size, int vga_ram_size, int boot_device, | ||
31 | + DisplayState * ds, const char **fd_filename, int snapshot, | ||
32 | + const char *kernel_filename, const char *kernel_cmdline, | ||
33 | + const char *initrd_filename, const char *cpu_model) | ||
34 | +{ | ||
35 | + int ret; | ||
36 | + CPUState *env; | ||
37 | + struct SH7750State *s; | ||
38 | + | ||
39 | + env = cpu_init(); | ||
40 | + | ||
41 | + /* Allocate memory space */ | ||
42 | + cpu_register_physical_memory(SDRAM_BASE, SDRAM_SIZE, 0); | ||
43 | + /* Register peripherals */ | ||
44 | + s = sh7750_init(env); | ||
45 | + /* Todo: register on board registers */ | ||
46 | + { | ||
47 | + int kernel_size; | ||
48 | + | ||
49 | + kernel_size = load_image(kernel_filename, phys_ram_base); | ||
50 | + | ||
51 | + if (kernel_size < 0) { | ||
52 | + fprintf(stderr, "qemu: could not load kernel '%s'\n", kernel_filename); | ||
53 | + exit(1); | ||
54 | + } | ||
55 | + | ||
56 | + env->pc = SDRAM_BASE | 0xa0000000; /* Start from P2 area */ | ||
57 | + } | ||
58 | +} | ||
59 | + | ||
60 | +QEMUMachine r2d_machine = { | ||
61 | + "r2d", | ||
62 | + "r2d-plus board", | ||
63 | + r2d_init | ||
64 | +}; |
vl.c
@@ -7383,6 +7383,7 @@ void register_machines(void) | @@ -7383,6 +7383,7 @@ void register_machines(void) | ||
7383 | qemu_register_machine(&palmte_machine); | 7383 | qemu_register_machine(&palmte_machine); |
7384 | #elif defined(TARGET_SH4) | 7384 | #elif defined(TARGET_SH4) |
7385 | qemu_register_machine(&shix_machine); | 7385 | qemu_register_machine(&shix_machine); |
7386 | + qemu_register_machine(&r2d_machine); | ||
7386 | #elif defined(TARGET_ALPHA) | 7387 | #elif defined(TARGET_ALPHA) |
7387 | /* XXX: TODO */ | 7388 | /* XXX: TODO */ |
7388 | #elif defined(TARGET_M68K) | 7389 | #elif defined(TARGET_M68K) |
vl.h
@@ -1206,6 +1206,9 @@ extern void cpu_mips_irqctrl_init (void); | @@ -1206,6 +1206,9 @@ extern void cpu_mips_irqctrl_init (void); | ||
1206 | /* shix.c */ | 1206 | /* shix.c */ |
1207 | extern QEMUMachine shix_machine; | 1207 | extern QEMUMachine shix_machine; |
1208 | 1208 | ||
1209 | +/* r2d.c */ | ||
1210 | +extern QEMUMachine r2d_machine; | ||
1211 | + | ||
1209 | #ifdef TARGET_PPC | 1212 | #ifdef TARGET_PPC |
1210 | /* PowerPC hardware exceptions management helpers */ | 1213 | /* PowerPC hardware exceptions management helpers */ |
1211 | typedef void (*clk_setup_cb)(void *opaque, uint32_t freq); | 1214 | typedef void (*clk_setup_cb)(void *opaque, uint32_t freq); |