Add missing 64 bits memory accessors.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2592 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
		
							parent
							
								
									eae7629bfd
								
							
						
					
					
						commit
						bc98a7efa4
					
				| 
						 | 
					@ -644,12 +644,14 @@ static inline void stfq_be_p(void *ptr, float64 v)
 | 
				
			||||||
#define lduw_code(p) lduw_raw(p)
 | 
					#define lduw_code(p) lduw_raw(p)
 | 
				
			||||||
#define ldsw_code(p) ldsw_raw(p)
 | 
					#define ldsw_code(p) ldsw_raw(p)
 | 
				
			||||||
#define ldl_code(p) ldl_raw(p)
 | 
					#define ldl_code(p) ldl_raw(p)
 | 
				
			||||||
 | 
					#define ldq_code(p) ldq_raw(p)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ldub_kernel(p) ldub_raw(p)
 | 
					#define ldub_kernel(p) ldub_raw(p)
 | 
				
			||||||
#define ldsb_kernel(p) ldsb_raw(p)
 | 
					#define ldsb_kernel(p) ldsb_raw(p)
 | 
				
			||||||
#define lduw_kernel(p) lduw_raw(p)
 | 
					#define lduw_kernel(p) lduw_raw(p)
 | 
				
			||||||
#define ldsw_kernel(p) ldsw_raw(p)
 | 
					#define ldsw_kernel(p) ldsw_raw(p)
 | 
				
			||||||
#define ldl_kernel(p) ldl_raw(p)
 | 
					#define ldl_kernel(p) ldl_raw(p)
 | 
				
			||||||
 | 
					#define ldq_kernel(p) ldq_raw(p)
 | 
				
			||||||
#define ldfl_kernel(p) ldfl_raw(p)
 | 
					#define ldfl_kernel(p) ldfl_raw(p)
 | 
				
			||||||
#define ldfq_kernel(p) ldfq_raw(p)
 | 
					#define ldfq_kernel(p) ldfq_raw(p)
 | 
				
			||||||
#define stb_kernel(p, v) stb_raw(p, v)
 | 
					#define stb_kernel(p, v) stb_raw(p, v)
 | 
				
			||||||
| 
						 | 
					@ -882,6 +884,7 @@ uint32_t lduw_phys(target_phys_addr_t addr);
 | 
				
			||||||
uint32_t ldl_phys(target_phys_addr_t addr);
 | 
					uint32_t ldl_phys(target_phys_addr_t addr);
 | 
				
			||||||
uint64_t ldq_phys(target_phys_addr_t addr);
 | 
					uint64_t ldq_phys(target_phys_addr_t addr);
 | 
				
			||||||
void stl_phys_notdirty(target_phys_addr_t addr, uint32_t val);
 | 
					void stl_phys_notdirty(target_phys_addr_t addr, uint32_t val);
 | 
				
			||||||
 | 
					void stq_phys_notdirty(target_phys_addr_t addr, uint64_t val);
 | 
				
			||||||
void stb_phys(target_phys_addr_t addr, uint32_t val);
 | 
					void stb_phys(target_phys_addr_t addr, uint32_t val);
 | 
				
			||||||
void stw_phys(target_phys_addr_t addr, uint32_t val);
 | 
					void stw_phys(target_phys_addr_t addr, uint32_t val);
 | 
				
			||||||
void stl_phys(target_phys_addr_t addr, uint32_t val);
 | 
					void stl_phys(target_phys_addr_t addr, uint32_t val);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										32
									
								
								exec.c
								
								
								
								
							
							
						
						
									
										32
									
								
								exec.c
								
								
								
								
							| 
						 | 
					@ -338,7 +338,7 @@ void tb_flush(CPUState *env1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef DEBUG_TB_CHECK
 | 
					#ifdef DEBUG_TB_CHECK
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void tb_invalidate_check(unsigned long address)
 | 
					static void tb_invalidate_check(target_ulong address)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    TranslationBlock *tb;
 | 
					    TranslationBlock *tb;
 | 
				
			||||||
    int i;
 | 
					    int i;
 | 
				
			||||||
| 
						 | 
					@ -2433,6 +2433,36 @@ void stl_phys_notdirty(target_phys_addr_t addr, uint32_t val)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void stq_phys_notdirty(target_phys_addr_t addr, uint64_t val)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    int io_index;
 | 
				
			||||||
 | 
					    uint8_t *ptr;
 | 
				
			||||||
 | 
					    unsigned long pd;
 | 
				
			||||||
 | 
					    PhysPageDesc *p;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    p = phys_page_find(addr >> TARGET_PAGE_BITS);
 | 
				
			||||||
 | 
					    if (!p) {
 | 
				
			||||||
 | 
					        pd = IO_MEM_UNASSIGNED;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        pd = p->phys_offset;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    if ((pd & ~TARGET_PAGE_MASK) != IO_MEM_RAM) {
 | 
				
			||||||
 | 
					        io_index = (pd >> IO_MEM_SHIFT) & (IO_MEM_NB_ENTRIES - 1);
 | 
				
			||||||
 | 
					#ifdef TARGET_WORDS_BIGENDIAN
 | 
				
			||||||
 | 
					        io_mem_write[io_index][2](io_mem_opaque[io_index], addr, val >> 32);
 | 
				
			||||||
 | 
					        io_mem_write[io_index][2](io_mem_opaque[io_index], addr + 4, val);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					        io_mem_write[io_index][2](io_mem_opaque[io_index], addr, val);
 | 
				
			||||||
 | 
					        io_mem_write[io_index][2](io_mem_opaque[io_index], addr + 4, val >> 32);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        ptr = phys_ram_base + (pd & TARGET_PAGE_MASK) + 
 | 
				
			||||||
 | 
					            (addr & ~TARGET_PAGE_MASK);
 | 
				
			||||||
 | 
					        stq_p(ptr, val);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* warning: addr must be aligned */
 | 
					/* warning: addr must be aligned */
 | 
				
			||||||
void stl_phys(target_phys_addr_t addr, uint32_t val)
 | 
					void stl_phys(target_phys_addr_t addr, uint32_t val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue