/* * tb-flush prototype for use by the rest of the system. * * Copyright (c) 2022 Linaro Ltd * * SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef _TB_FLUSH_H_ #define _TB_FLUSH_H_ /** * tb_flush__exclusive_or_serial() * * Used to flush all the translation blocks in the system. Mostly this is * used to empty the code generation buffer after it is full. Sometimes it * is used when it is simpler to flush everything than work out which * individual translations are now invalid. * * Must be called from an exclusive or serial context, e.g. start_exclusive, * vm_stop, or when there is only one vcpu. Note that start_exclusive cannot * be called from within the cpu run loop, so this cannot be called from * within target code. */ void tb_flush__exclusive_or_serial(void); /** * queue_tb_flush() - add flush to the cpu work queue * @cs: CPUState * * Flush all translation blocks the next time @cs processes the work queue. * This should generally be followed by cpu_loop_exit(), so that the work * queue is processed promptly. */ void queue_tb_flush(CPUState *cs); void tcg_flush_jmp_cache(CPUState *cs); #endif /* _TB_FLUSH_H_ */