Commit eed2df67 authored by Peter Maydell's avatar Peter Maydell
Browse files

Merge remote-tracking branch 'remotes/borntraeger/tags/s390x-20151006' into staging



s390: fixes

Some fixes all over the place:
- ccw bios and gcc 5.1 (avoid floating point ops)
- properly print vector registers
- sclp and sclp-event-facility no longer hang on object_unref(object_new(T))
- better name for io_subsystem_reset

One feature
- the gdb server now exposes several virtualization specific register

# gpg: Signature made Tue 06 Oct 2015 11:20:24 BST using RSA key ID B5A61C7C
# gpg: Good signature from "Christian Borntraeger (IBM) <borntraeger@de.ibm.com>"

* remotes/borntraeger/tags/s390x-20151006:
  s390x: rename io_subsystem_reset -> subsystem_reset
  s390x/info registers: print vector registers properly
  s390x: set missing parent for hotplug and quiesce events
  s390x/gdb: expose virtualization specific registers
  pc-bios/s390-ccw: avoid floating point operations

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parents 5fdb4671 d9f090ec
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -5457,7 +5457,7 @@ case "$target_name" in
    echo "TARGET_ABI32=y" >> $config_target_mak
  ;;
  s390x)
    gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml"
    gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml"
  ;;
  tilegx)
  ;;

gdb-xml/s390-virt.xml

0 → 100644
+18 −0
Original line number Diff line number Diff line
<?xml version="1.0"?>
<!-- Copyright 2015 IBM Corp.

     This work is licensed under the terms of the GNU GPL, version 2 or
     (at your option) any later version. See the COPYING file in the
     top-level directory. -->

<!DOCTYPE feature SYSTEM "gdb-target.dtd">
<feature name="org.gnu.gdb.s390.virt">
  <reg name="ckc" bitsize="64" type="uint64" group="system"/>
  <reg name="cputm" bitsize="64" type="uint64" group="system"/>
  <reg name="last_break" bitsize="64" type="code_ptr" group="system"/>
  <reg name="prefix" bitsize="64" type="data_ptr" group="system"/>
  <reg name="pp" bitsize="64" type="uint64" group="system"/>
  <reg name="pfault_token" bitsize="64" type="uint64" group="system"/>
  <reg name="pfault_select" bitsize="64" type="uint64" group="system"/>
  <reg name="pfault_compare" bitsize="64" type="uint64" group="system"/>
</feature>
+10 −10
Original line number Diff line number Diff line
@@ -27,8 +27,6 @@ typedef struct SCLPEventsBus {
struct SCLPEventFacility {
    SysBusDevice parent_obj;
    SCLPEventsBus sbus;
    SCLPEvent quiesce_event;
    SCLPEvent cpu_hotplug_event;
    /* guest' receive mask */
    unsigned int receive_mask;
};
@@ -347,19 +345,21 @@ static void init_event_facility(Object *obj)
{
    SCLPEventFacility *event_facility = EVENT_FACILITY(obj);
    DeviceState *sdev = DEVICE(obj);
    Object *new;

    /* Spawn a new bus for SCLP events */
    qbus_create_inplace(&event_facility->sbus, sizeof(event_facility->sbus),
                        TYPE_SCLP_EVENTS_BUS, sdev, NULL);

    object_initialize(&event_facility->quiesce_event, sizeof(SCLPEvent),
                      TYPE_SCLP_QUIESCE);
    qdev_set_parent_bus(DEVICE(&event_facility->quiesce_event),
                        &event_facility->sbus.qbus);
    object_initialize(&event_facility->cpu_hotplug_event, sizeof(SCLPEvent),
                      TYPE_SCLP_CPU_HOTPLUG);
    qdev_set_parent_bus(DEVICE(&event_facility->cpu_hotplug_event),
                        &event_facility->sbus.qbus);
    new = object_new(TYPE_SCLP_QUIESCE);
    object_property_add_child(obj, TYPE_SCLP_QUIESCE, new, NULL);
    object_unref(new);
    qdev_set_parent_bus(DEVICE(new), &event_facility->sbus.qbus);

    new = object_new(TYPE_SCLP_CPU_HOTPLUG);
    object_property_add_child(obj, TYPE_SCLP_CPU_HOTPLUG, new, NULL);
    object_unref(new);
    qdev_set_parent_bus(DEVICE(new), &event_facility->sbus.qbus);
    /* the facility will automatically realize the devices via the bus */
}

+1 −1
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ typedef struct S390CcwMachineState {
    bool dea_key_wrap;
} S390CcwMachineState;

void io_subsystem_reset(void)
void subsystem_reset(void)
{
    DeviceState *css, *sclp, *flic, *diag288;

+2 −1
Original line number Diff line number Diff line
@@ -10,7 +10,8 @@ $(call set-vpath, $(SRC_PATH)/pc-bios/s390-ccw)
.PHONY : all clean build-all

OBJECTS = start.o main.o bootmap.o sclp-ascii.o virtio.o
CFLAGS += -fPIE -fno-stack-protector -ffreestanding -fno-delete-null-pointer-checks
CFLAGS += -fPIE -fno-stack-protector -ffreestanding
CFLAGS += -fno-delete-null-pointer-checks -msoft-float
LDFLAGS += -Wl,-pie -nostdlib

build-all: s390-ccw.img
Loading