Skip to content

SERVC cannot handle addresses >=4GB #292

@jeffpc

Description

@jeffpc

I was noodling around with some standalone code and I ran into what I believe is a bug. Specifically, when I issue the SERVC instruction with a real address that's >=4GB to print a message in the hercules window, "nothing" happens. Looking at the code [1,2], it would appear that the SERVC instruction handler gets the address from the register using GR_L and then stores it in a U32 before applying prefixing. I couldn't find any documentation for how SERVC is supposed to behave, but it seems weird that it would use the low 32 bits of the register (instead of 31) if truncating the address was truly the intention.

[1] https://github.com/hercules-390/hyperion/blob/master/service.c#L1099
[2] https://github.com/hercules-390/hyperion/blob/master/service.c#L1162

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions