boostorg/context

s390x Architecture support missing

Naveenaidu opened this issue · 4 comments

Boost.Context does not currently support s390x architectures. This in turn blocks the coroutine module from being available.

I am currently working on this issue as a part of OpenMainframe Project Internship. Will be sending a PR soon :)

Will your fcontext support the vector registers? Also, what did you do to enable context to know about s390x? Adding entries to Jamfile.v2 and architecture.jam are part of the process but what else is needed?

@nealef I'm sorry - I won't be able to do a complete justice to your questions. My internship hasn't yet started and I am still reading the documentation to get started. I haven't yet started the implementation part 😅 Though I will be able to give a brief idea about what needs to be done.

  1. Boost's Build system doesn't currently support the s390x architecture - So the first change would be to update the Build system to detect the appropriate assembly file ( There's an open issue for this at Boost.build). Along with it as you said, we would also have to update the Jamfile.v2 and architecture.jam

  2. I would have to implement three assembly files for s390x arch:

- jump_s39x_sysv_elf_gas.S: context switch between two fibers/fiber_contexts
- make_s39x_sysv_elf_gas.S: prepares stack for the first invocation
- ontop_s39x_sysv_elf_gas.S: execute function on top of a fiber/fiber_context

I'll be using the ELF binary format and sysv as the ABI for the assembly files.

olk commented

Now supported