mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
accel/tcg: Move CPUNegativeOffsetState into CPUState
Retain the separate structure to emphasize its importance. Enforce CPUArchState always follows CPUState without padding. Reviewed-by: Anton Johansson <anjo@rev.ng> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
5d30bdcb1b
commit
3b3d7df545
25 changed files with 38 additions and 46 deletions
|
@ -345,8 +345,8 @@ typedef union IcountDecr {
|
|||
} IcountDecr;
|
||||
|
||||
/*
|
||||
* This structure must be placed in ArchCPU immediately
|
||||
* before CPUArchState, as a field named "neg".
|
||||
* Elements of CPUState most efficiently accessed from CPUArchState,
|
||||
* via small negative offsets.
|
||||
*/
|
||||
typedef struct CPUNegativeOffsetState {
|
||||
CPUTLB tlb;
|
||||
|
@ -453,6 +453,9 @@ struct qemu_work_item;
|
|||
* dirty ring structure.
|
||||
*
|
||||
* State of one CPU core or thread.
|
||||
*
|
||||
* Align, in order to match possible alignment required by CPUArchState,
|
||||
* and eliminate a hole between CPUState and CPUArchState within ArchCPU.
|
||||
*/
|
||||
struct CPUState {
|
||||
/*< private >*/
|
||||
|
@ -571,8 +574,18 @@ struct CPUState {
|
|||
|
||||
/* track IOMMUs whose translations we've cached in the TCG TLB */
|
||||
GArray *iommu_notifiers;
|
||||
|
||||
/*
|
||||
* MUST BE LAST in order to minimize the displacement to CPUArchState.
|
||||
*/
|
||||
char neg_align[-sizeof(CPUNegativeOffsetState) % 16] QEMU_ALIGNED(16);
|
||||
CPUNegativeOffsetState neg;
|
||||
};
|
||||
|
||||
/* Validate placement of CPUNegativeOffsetState. */
|
||||
QEMU_BUILD_BUG_ON(offsetof(CPUState, neg) !=
|
||||
sizeof(CPUState) - sizeof(CPUNegativeOffsetState));
|
||||
|
||||
typedef QTAILQ_HEAD(CPUTailQ, CPUState) CPUTailQ;
|
||||
extern CPUTailQ cpus;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue