[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 03/39] qom: Propagate alignment through type system
From: |
Richard Henderson |
Subject: |
[PATCH v3 03/39] qom: Propagate alignment through type system |
Date: |
Sat, 16 Sep 2023 14:40:47 -0700 |
Propagate alignment just like size. This is required in order to
get the correct alignment on most cpu subclasses where the size and
alignment is only specified for the base cpu type.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
qom/object.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/qom/object.c b/qom/object.c
index e25f1e96db..8557fe8e4e 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -220,6 +220,19 @@ static size_t type_object_get_size(TypeImpl *ti)
return 0;
}
+static size_t type_object_get_align(TypeImpl *ti)
+{
+ if (ti->instance_align) {
+ return ti->instance_align;
+ }
+
+ if (type_has_parent(ti)) {
+ return type_object_get_align(type_get_parent(ti));
+ }
+
+ return 0;
+}
+
size_t object_type_get_instance_size(const char *typename)
{
TypeImpl *type = type_get_by_name(typename);
@@ -293,6 +306,7 @@ static void type_initialize(TypeImpl *ti)
ti->class_size = type_class_get_size(ti);
ti->instance_size = type_object_get_size(ti);
+ ti->instance_align = type_object_get_align(ti);
/* Any type with zero instance_size is implicitly abstract.
* This means interface types are all abstract.
*/
--
2.34.1
- [PATCH v3 00/39] target agnostic cleanups, Richard Henderson, 2023/09/16
- [PATCH v3 01/39] target/arm: Replace TARGET_PAGE_ENTRY_EXTRA, Richard Henderson, 2023/09/16
- [PATCH v3 03/39] qom: Propagate alignment through type system,
Richard Henderson <=
- [PATCH v3 08/39] accel/tcg: Remove CPUState.icount_decr_ptr, Richard Henderson, 2023/09/16
- [PATCH v3 07/39] accel/tcg: Move CPUNegativeOffsetState into CPUState, Richard Henderson, 2023/09/16
- [PATCH v3 09/39] accel/tcg: Move can_do_io to CPUNegativeOffsetState, Richard Henderson, 2023/09/16
- [PATCH v3 05/39] target/*: Add instance_align to all cpu base classes, Richard Henderson, 2023/09/16
- [PATCH v3 04/39] target/arm: Remove size and alignment for cpu subclasses, Richard Henderson, 2023/09/16
- [PATCH v3 02/39] accel/tcg: Move CPUTLB definitions from cpu-defs.h, Richard Henderson, 2023/09/16
- [PATCH v3 06/39] accel/tcg: Validate placement of CPUNegativeOffsetState, Richard Henderson, 2023/09/16
- [PATCH v3 10/39] accel/tcg: Remove cpu_neg(), Richard Henderson, 2023/09/16
- [PATCH v3 14/39] accel/tcg: Remove env_neg(), Richard Henderson, 2023/09/16