include/exec: Move tb hash functions out
This is one of very few things in exec-all with a genuine CPU architecture dependency. Move these hashing helpers to a new header to trim exec-all.h down to a near architecture-agnostic header. The defs are only used by cpu-exec and translate-all which are both arch-obj's so the new tb-hash.h has no core code usage. Reviewed-by: Richard Henderson <rth@redhat.com> Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com> Message-Id: <9d048b96f7cfa64a4d9c0b88e0dd2877fac51d41.1433052532.git.crosthwaite.peter@gmail.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
		
							parent
							
								
									9e0dc48c9f
								
							
						
					
					
						commit
						e1b89321ba
					
				| 
						 | 
				
			
			@ -27,6 +27,7 @@
 | 
			
		|||
#include "exec/address-spaces.h"
 | 
			
		||||
#include "exec/memory-internal.h"
 | 
			
		||||
#include "qemu/rcu.h"
 | 
			
		||||
#include "exec/tb-hash.h"
 | 
			
		||||
 | 
			
		||||
/* -icount align implementation. */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -195,26 +195,6 @@ struct TBContext {
 | 
			
		|||
    int tb_invalidated_flag;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static inline unsigned int tb_jmp_cache_hash_page(target_ulong pc)
 | 
			
		||||
{
 | 
			
		||||
    target_ulong tmp;
 | 
			
		||||
    tmp = pc ^ (pc >> (TARGET_PAGE_BITS - TB_JMP_PAGE_BITS));
 | 
			
		||||
    return (tmp >> (TARGET_PAGE_BITS - TB_JMP_PAGE_BITS)) & TB_JMP_PAGE_MASK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline unsigned int tb_jmp_cache_hash_func(target_ulong pc)
 | 
			
		||||
{
 | 
			
		||||
    target_ulong tmp;
 | 
			
		||||
    tmp = pc ^ (pc >> (TARGET_PAGE_BITS - TB_JMP_PAGE_BITS));
 | 
			
		||||
    return (((tmp >> (TARGET_PAGE_BITS - TB_JMP_PAGE_BITS)) & TB_JMP_PAGE_MASK)
 | 
			
		||||
	    | (tmp & TB_JMP_ADDR_MASK));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline unsigned int tb_phys_hash_func(tb_page_addr_t pc)
 | 
			
		||||
{
 | 
			
		||||
    return (pc >> 2) & (CODE_GEN_PHYS_HASH_SIZE - 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void tb_free(TranslationBlock *tb);
 | 
			
		||||
void tb_flush(CPUArchState *env);
 | 
			
		||||
void tb_phys_invalidate(TranslationBlock *tb, tb_page_addr_t page_addr);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,43 @@
 | 
			
		|||
/*
 | 
			
		||||
 * internal execution defines for qemu
 | 
			
		||||
 *
 | 
			
		||||
 *  Copyright (c) 2003 Fabrice Bellard
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Lesser General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Lesser General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Lesser General Public
 | 
			
		||||
 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef EXEC_TB_HASH
 | 
			
		||||
#define EXEC_TB_HASH
 | 
			
		||||
 | 
			
		||||
static inline unsigned int tb_jmp_cache_hash_page(target_ulong pc)
 | 
			
		||||
{
 | 
			
		||||
    target_ulong tmp;
 | 
			
		||||
    tmp = pc ^ (pc >> (TARGET_PAGE_BITS - TB_JMP_PAGE_BITS));
 | 
			
		||||
    return (tmp >> (TARGET_PAGE_BITS - TB_JMP_PAGE_BITS)) & TB_JMP_PAGE_MASK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline unsigned int tb_jmp_cache_hash_func(target_ulong pc)
 | 
			
		||||
{
 | 
			
		||||
    target_ulong tmp;
 | 
			
		||||
    tmp = pc ^ (pc >> (TARGET_PAGE_BITS - TB_JMP_PAGE_BITS));
 | 
			
		||||
    return (((tmp >> (TARGET_PAGE_BITS - TB_JMP_PAGE_BITS)) & TB_JMP_PAGE_MASK)
 | 
			
		||||
           | (tmp & TB_JMP_ADDR_MASK));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline unsigned int tb_phys_hash_func(tb_page_addr_t pc)
 | 
			
		||||
{
 | 
			
		||||
    return (pc >> 2) & (CODE_GEN_PHYS_HASH_SIZE - 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -58,6 +58,7 @@
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
#include "exec/cputlb.h"
 | 
			
		||||
#include "exec/tb-hash.h"
 | 
			
		||||
#include "translate-all.h"
 | 
			
		||||
#include "qemu/bitmap.h"
 | 
			
		||||
#include "qemu/timer.h"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue