cpu-exec: Add "nochain" debug flag
Respect it to avoid linking TBs together. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
		
							parent
							
								
									137d63902f
								
							
						
					
					
						commit
						89a82cd4b6
					
				@ -477,7 +477,8 @@ int cpu_exec(CPUState *cpu)
 | 
				
			|||||||
                /* see if we can patch the calling TB. When the TB
 | 
					                /* see if we can patch the calling TB. When the TB
 | 
				
			||||||
                   spans two pages, we cannot safely do a direct
 | 
					                   spans two pages, we cannot safely do a direct
 | 
				
			||||||
                   jump. */
 | 
					                   jump. */
 | 
				
			||||||
                if (next_tb != 0 && tb->page_addr[1] == -1) {
 | 
					                if (next_tb != 0 && tb->page_addr[1] == -1
 | 
				
			||||||
 | 
					                    && !qemu_loglevel_mask(CPU_LOG_TB_NOCHAIN)) {
 | 
				
			||||||
                    tb_add_jump((TranslationBlock *)(next_tb & ~TB_EXIT_MASK),
 | 
					                    tb_add_jump((TranslationBlock *)(next_tb & ~TB_EXIT_MASK),
 | 
				
			||||||
                                next_tb & TB_EXIT_MASK, tb);
 | 
					                                next_tb & TB_EXIT_MASK, tb);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
				
			|||||||
@ -41,6 +41,7 @@ static inline bool qemu_log_enabled(void)
 | 
				
			|||||||
#define LOG_UNIMP          (1 << 10)
 | 
					#define LOG_UNIMP          (1 << 10)
 | 
				
			||||||
#define LOG_GUEST_ERROR    (1 << 11)
 | 
					#define LOG_GUEST_ERROR    (1 << 11)
 | 
				
			||||||
#define CPU_LOG_MMU        (1 << 12)
 | 
					#define CPU_LOG_MMU        (1 << 12)
 | 
				
			||||||
 | 
					#define CPU_LOG_TB_NOCHAIN (1 << 13)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Returns true if a bit is set in the current loglevel mask
 | 
					/* Returns true if a bit is set in the current loglevel mask
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
				
			|||||||
@ -119,6 +119,9 @@ const QEMULogItem qemu_log_items[] = {
 | 
				
			|||||||
    { LOG_GUEST_ERROR, "guest_errors",
 | 
					    { LOG_GUEST_ERROR, "guest_errors",
 | 
				
			||||||
      "log when the guest OS does something invalid (eg accessing a\n"
 | 
					      "log when the guest OS does something invalid (eg accessing a\n"
 | 
				
			||||||
      "non-existent register)" },
 | 
					      "non-existent register)" },
 | 
				
			||||||
 | 
					    { CPU_LOG_TB_NOCHAIN, "nochain",
 | 
				
			||||||
 | 
					      "do not chain compiled TBs so that \"exec\" and \"cpu\" show\n"
 | 
				
			||||||
 | 
					      "complete traces" },
 | 
				
			||||||
    { 0, NULL, NULL },
 | 
					    { 0, NULL, NULL },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user