X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=cpu-defs.h;h=5e0f04674e6c01c0a2b1e7fad6e7da9d07825fe9;hb=d66846a14e191c75f4aa373623dd9a7aaa843ade;hp=a19fef72d9af87b8fddd12d6e63a9ba839af3f8b;hpb=ba13c4327e19c083dd76d69805c5bf3dd44ca46c;p=qemu diff --git a/cpu-defs.h b/cpu-defs.h index a19fef7..5e0f046 100644 --- a/cpu-defs.h +++ b/cpu-defs.h @@ -1,6 +1,6 @@ /* * common defines for all CPUs - * + * * Copyright (c) 2003 Fabrice Bellard * * This library is free software; you can redistribute it and/or @@ -20,6 +20,10 @@ #ifndef CPU_DEFS_H #define CPU_DEFS_H +#ifndef NEED_CPU_H +#error cpu.h included from common code +#endif + #include "config.h" #include #include @@ -29,7 +33,7 @@ #error TARGET_LONG_BITS must be defined before including this header #endif -#ifndef TARGET_PHYS_ADDR_BITS +#ifndef TARGET_PHYS_ADDR_BITS #if TARGET_LONG_BITS >= HOST_LONG_BITS #define TARGET_PHYS_ADDR_BITS TARGET_LONG_BITS #else @@ -45,11 +49,13 @@ typedef int32_t target_long; typedef uint32_t target_ulong; #define TARGET_FMT_lx "%08x" #define TARGET_FMT_ld "%d" +#define TARGET_FMT_lu "%u" #elif TARGET_LONG_SIZE == 8 typedef int64_t target_long; typedef uint64_t target_ulong; #define TARGET_FMT_lx "%016" PRIx64 #define TARGET_FMT_ld "%" PRId64 +#define TARGET_FMT_lu "%" PRIu64 #else #error TARGET_LONG_SIZE undefined #endif @@ -97,28 +103,19 @@ typedef unsigned long ram_addr_t; #define CPU_TLB_SIZE (1 << CPU_TLB_BITS) typedef struct CPUTLBEntry { - /* bit 31 to TARGET_PAGE_BITS : virtual address + /* bit 31 to TARGET_PAGE_BITS : virtual address bit TARGET_PAGE_BITS-1..IO_MEM_SHIFT : if non zero, memory io zone number bit 3 : indicates that the entry is invalid bit 2..0 : zero */ - target_ulong addr_read; - target_ulong addr_write; - target_ulong addr_code; + target_ulong addr_read; + target_ulong addr_write; + target_ulong addr_code; /* addend to virtual address to get physical address */ - target_phys_addr_t addend; + target_phys_addr_t addend; } CPUTLBEntry; -/* Alpha has 4 different running levels */ -#if defined(TARGET_ALPHA) -#define NB_MMU_MODES 4 -#elif defined(TARGET_PPC64H) /* PowerPC 64 with hypervisor mode support */ -#define NB_MMU_MODES 3 -#else -#define NB_MMU_MODES 2 -#endif - #define CPU_COMMON \ struct TranslationBlock *current_tb; /* currently executing TB */ \ /* soft mmu support */ \ @@ -129,7 +126,7 @@ typedef struct CPUTLBEntry { written */ \ target_ulong mem_write_vaddr; /* target virtual addr at which the \ memory was written */ \ - /* 0 = kernel, 1 = user */ \ + /* The meaning of the MMU modes is defined in the target code. */ \ CPUTLBEntry tlb_table[NB_MMU_MODES][CPU_TLB_SIZE]; \ struct TranslationBlock *tb_jmp_cache[TB_JMP_CACHE_SIZE]; \ \ @@ -141,7 +138,7 @@ typedef struct CPUTLBEntry { \ struct { \ target_ulong vaddr; \ - int is_ram; \ + target_phys_addr_t addend; \ } watchpoint[MAX_WATCHPOINTS]; \ int nb_watchpoints; \ int watchpoint_hit; \ @@ -149,6 +146,8 @@ typedef struct CPUTLBEntry { void *next_cpu; /* next CPU sharing TB cache */ \ int cpu_index; /* CPU index (informative) */ \ /* user data */ \ - void *opaque; + void *opaque; \ + \ + const char *cpu_model_str; #endif