Ignore:
Timestamp:
12/10/07 18:38:35 (5 years ago)
Author:
andrew
Message:

Add a machine ID register on the pseudo-gta02 machine.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/host/qemu-neo1973/hw/neo1973.c

    r3582 r3625  
    8888    const char *kernel; 
    8989    struct sd_card_s *mmc; 
     90    uint32_t id; 
    9091}; 
    9192 
     
    432433static struct neo_board_s *neo1973_init_common(int ram_size, DisplayState *ds, 
    433434                const char *kernel_filename, const char *cpu_model, 
    434                 struct sd_card_s *mmc) 
     435                struct sd_card_s *mmc, uint32_t id) 
    435436{ 
    436437    struct neo_board_s *s = (struct neo_board_s *) 
     
    440441    s->kernel = kernel_filename; 
    441442    s->mmc = mmc; 
     443    s->id = id; 
    442444 
    443445    /* Setup CPU & memory */ 
     
    484486} 
    485487 
     488static uint32_t neo_machid_read(void *opaque, target_phys_addr_t addr) 
     489{ 
     490    return 'Q'; 
     491} 
     492 
     493static void neo_machid_write(void *opaque, 
     494                target_phys_addr_t addr, uint32_t val) 
     495{ 
     496    struct neo_board_s *s = (struct neo_board_s *) opaque; 
     497 
     498    if ((val >> 4) == 'Q') 
     499        s->cpu->env->regs[val & 0xf] = s->id; 
     500} 
     501 
     502static void neo_machid_init(struct neo_board_s *s) 
     503{ 
     504    static CPUReadMemoryFunc *readfn[] = { 
     505        neo_machid_read, neo_machid_read, neo_machid_read, 
     506    }; 
     507    static CPUWriteMemoryFunc *writefn[] = { 
     508        neo_machid_write, neo_machid_write, neo_machid_write, 
     509    }; 
     510    int iomemtype = cpu_register_io_memory(0, readfn, writefn, s); 
     511 
     512    /* SROM chipselect 5 base */ 
     513    cpu_register_physical_memory(0x28000000, 1, iomemtype); 
     514} 
     515 
    486516static void gta01_init(int ram_size, int vga_ram_size, 
    487517                const char *boot_device, DisplayState *ds, 
     
    495525        sd = sd_init(drives_table[sd_idx].bdrv, 0); 
    496526 
    497     neo1973_init_common(ram_size, ds, kernel_filename, cpu_model, sd); 
     527    neo1973_init_common(ram_size, ds, 
     528                    kernel_filename, cpu_model, sd, 1304); 
    498529} 
    499530 
     
    505536    struct neo_board_s *neo; 
    506537 
    507     neo = neo1973_init_common(ram_size, ds, kernel_filename, cpu_model, 0); 
     538    neo = neo1973_init_common(ram_size, ds, 
     539                    kernel_filename, cpu_model, 0, 1555); 
    508540 
    509541    neo_gps_setup(neo); 
     542    neo_machid_init(neo); 
    510543} 
    511544 
Note: See TracChangeset for help on using the changeset viewer.