| /* |
| * 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_ */ |