tcg: Create tcg_init
Perform both tcg_context_init and tcg_region_init. Do not leave this split to the caller. Reviewed-by: Luis Pires <luis.pires@eldorado.org.br> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
		
							parent
							
								
									7109ef15c5
								
							
						
					
					
						commit
						a76aabd37b
					
				| @ -920,10 +920,9 @@ static void tb_htable_init(void) | |||||||
| void tcg_exec_init(unsigned long tb_size, int splitwx) | void tcg_exec_init(unsigned long tb_size, int splitwx) | ||||||
| { | { | ||||||
|     tcg_allowed = true; |     tcg_allowed = true; | ||||||
|     tcg_context_init(&tcg_init_ctx); |  | ||||||
|     page_init(); |     page_init(); | ||||||
|     tb_htable_init(); |     tb_htable_init(); | ||||||
|     tcg_region_init(tb_size, splitwx); |     tcg_init(tb_size, splitwx); | ||||||
| 
 | 
 | ||||||
| #if defined(CONFIG_SOFTMMU) | #if defined(CONFIG_SOFTMMU) | ||||||
|     /* There's no guest base to take into account, so go ahead and
 |     /* There's no guest base to take into account, so go ahead and
 | ||||||
|  | |||||||
| @ -873,7 +873,6 @@ void *tcg_malloc_internal(TCGContext *s, int size); | |||||||
| void tcg_pool_reset(TCGContext *s); | void tcg_pool_reset(TCGContext *s); | ||||||
| TranslationBlock *tcg_tb_alloc(TCGContext *s); | TranslationBlock *tcg_tb_alloc(TCGContext *s); | ||||||
| 
 | 
 | ||||||
| void tcg_region_init(size_t tb_size, int splitwx); |  | ||||||
| void tb_destroy(TranslationBlock *tb); | void tb_destroy(TranslationBlock *tb); | ||||||
| void tcg_region_reset_all(void); | void tcg_region_reset_all(void); | ||||||
| 
 | 
 | ||||||
| @ -906,7 +905,7 @@ static inline void *tcg_malloc(int size) | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void tcg_context_init(TCGContext *s); | void tcg_init(size_t tb_size, int splitwx); | ||||||
| void tcg_register_thread(void); | void tcg_register_thread(void); | ||||||
| void tcg_prologue_init(TCGContext *s); | void tcg_prologue_init(TCGContext *s); | ||||||
| void tcg_func_start(TCGContext *s); | void tcg_func_start(TCGContext *s); | ||||||
|  | |||||||
| @ -30,6 +30,7 @@ | |||||||
| extern TCGContext **tcg_ctxs; | extern TCGContext **tcg_ctxs; | ||||||
| extern unsigned int n_tcg_ctxs; | extern unsigned int n_tcg_ctxs; | ||||||
| 
 | 
 | ||||||
|  | void tcg_region_init(size_t tb_size, int splitwx); | ||||||
| bool tcg_region_alloc(TCGContext *s); | bool tcg_region_alloc(TCGContext *s); | ||||||
| void tcg_region_initial_alloc(TCGContext *s); | void tcg_region_initial_alloc(TCGContext *s); | ||||||
| void tcg_region_prologue_set(TCGContext *s); | void tcg_region_prologue_set(TCGContext *s); | ||||||
|  | |||||||
| @ -576,8 +576,9 @@ static void process_op_defs(TCGContext *s); | |||||||
| static TCGTemp *tcg_global_reg_new_internal(TCGContext *s, TCGType type, | static TCGTemp *tcg_global_reg_new_internal(TCGContext *s, TCGType type, | ||||||
|                                             TCGReg reg, const char *name); |                                             TCGReg reg, const char *name); | ||||||
| 
 | 
 | ||||||
| void tcg_context_init(TCGContext *s) | static void tcg_context_init(void) | ||||||
| { | { | ||||||
|  |     TCGContext *s = &tcg_init_ctx; | ||||||
|     int op, total_args, n, i; |     int op, total_args, n, i; | ||||||
|     TCGOpDef *def; |     TCGOpDef *def; | ||||||
|     TCGArgConstraint *args_ct; |     TCGArgConstraint *args_ct; | ||||||
| @ -654,6 +655,12 @@ void tcg_context_init(TCGContext *s) | |||||||
|     cpu_env = temp_tcgv_ptr(ts); |     cpu_env = temp_tcgv_ptr(ts); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void tcg_init(size_t tb_size, int splitwx) | ||||||
|  | { | ||||||
|  |     tcg_context_init(); | ||||||
|  |     tcg_region_init(tb_size, splitwx); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /*
 | /*
 | ||||||
|  * Allocate TBs right before their corresponding translated code, making |  * Allocate TBs right before their corresponding translated code, making | ||||||
|  * sure that TBs and code are on different cache lines. |  * sure that TBs and code are on different cache lines. | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Richard Henderson
						Richard Henderson