Commit 0d78f544dede6b3cb16eda8fd3462fb0aa001a18

Authored by ths
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
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 +};
@@ -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)
@@ -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);