diff mbox series

[v2,03/24] qom: Propagate alignment through type system

Message ID 20230914024435.1381329-4-richard.henderson@linaro.org
State Superseded
Headers show
Series Reduce usage of CPUArchState in cputlb.c | expand

Commit Message

Richard Henderson Sept. 14, 2023, 2:44 a.m. UTC
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.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 qom/object.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

Comments

Philippe Mathieu-Daudé Sept. 14, 2023, 5:59 a.m. UTC | #1
On 14/9/23 04:44, Richard Henderson wrote:
> 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.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   qom/object.c | 14 ++++++++++++++
>   1 file changed, 14 insertions(+)

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
diff mbox series

Patch

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