]> Git Repo - qemu.git/commitdiff
s390x/css: Split out the IRB sense data
authorEric Farman <[email protected]>
Thu, 17 Jun 2021 23:25:35 +0000 (01:25 +0200)
committerCornelia Huck <[email protected]>
Mon, 21 Jun 2021 06:48:21 +0000 (08:48 +0200)
Let's move this logic into its own routine,
so it can be reused later.

Signed-off-by: Eric Farman <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Message-Id: <20210617232537.1337506[email protected]>
Signed-off-by: Cornelia Huck <[email protected]>
hw/s390x/css.c

index 2025507eddc12e2d59c00ec8b7918999728e54a0..26bd01458fcda5d653fc64b7c6c7cb31345cfb47 100644 (file)
@@ -1639,6 +1639,17 @@ static void copy_irb_to_guest(IRB *dest, const IRB *src, const PMCW *pmcw,
     *irb_len = sizeof(*dest);
 }
 
+static void build_irb_sense_data(SubchDev *sch, IRB *irb)
+{
+    int i;
+
+    /* Attention: sense_data is already BE! */
+    memcpy(irb->ecw, sch->sense_data, sizeof(sch->sense_data));
+    for (i = 0; i < ARRAY_SIZE(irb->ecw); i++) {
+        irb->ecw[i] = be32_to_cpu(irb->ecw[i]);
+    }
+}
+
 int css_do_tsch_get_irb(SubchDev *sch, IRB *target_irb, int *irb_len)
 {
     SCHIB *schib = &sch->curr_status;
@@ -1669,14 +1680,8 @@ int css_do_tsch_get_irb(SubchDev *sch, IRB *target_irb, int *irb_len)
         /* If a unit check is pending, copy sense data. */
         if ((schib->scsw.dstat & SCSW_DSTAT_UNIT_CHECK) &&
             (schib->pmcw.chars & PMCW_CHARS_MASK_CSENSE)) {
-            int i;
-
             irb.scsw.flags |= SCSW_FLAGS_MASK_ESWF | SCSW_FLAGS_MASK_ECTL;
-            /* Attention: sense_data is already BE! */
-            memcpy(irb.ecw, sch->sense_data, sizeof(sch->sense_data));
-            for (i = 0; i < ARRAY_SIZE(irb.ecw); i++) {
-                irb.ecw[i] = be32_to_cpu(irb.ecw[i]);
-            }
+            build_irb_sense_data(sch, &irb);
             irb.esw.erw = ESW_ERW_SENSE | (sizeof(sch->sense_data) << 8);
         }
     }
This page took 0.027654 seconds and 4 git commands to generate.