Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Floating point registers are not preserved

Open
#232 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
38/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet

Research direction

Start at the jump_fcontext implementation and compare its history around v1.61, when the floating-point preservation argument was removed. Read the linked POWER9 register-usage specification, focusing on nonvolatile FP14-FP31. Done means the context-switch behavior correctly preserves those registers on PPC64 and the reason for the historical change is understood.

Written by the indexing model from the issue text.

Description

Our project (https://github.com/DARMA-tasking/vt) uses Boost context for our task-based runtime system for scientific applications in HPC. Recently, we found a bug in a scientific application that uses our library after a context switch that we finally figured was due to not preserving nonvolatile floating point registers (in this case we were running on PPC64, but I think the problem is more prevalent). According to the POWER9 specification, FP14-FP31 are nonvolatile and must be preserved for correct context switching (https://www.ibm.com/docs/en/aix/7.2?topic=overview-register-usage-conventions).

I've noticed looking back in the history that floating point preservation was dropped around v1.61. The argument for preserving in jump_fcontext was dropped. I'm trying to understand why this functionality was lost.

@olk

Dominant language
Assembly
Stars
371
Forks
185
Avg merge
4d 13h
Merged PRs (30d)
1

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from boostorg/context

All issues in boostorg/context

Similar issues

More HPC issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.