)]}'
{
  "commit": "ebd394948de4e868cb8fc5b265a8a18f0935dce1",
  "tree": "81e9fa3c996af205a6c71ef60385ddb5f8f732be",
  "parents": [
    "b4b49cf39dba5f993ad925f204cb820aacfc8e45"
  ],
  "author": {
    "name": "Helge Deller",
    "email": "deller@gmx.de",
    "time": "Sat May 17 13:27:48 2025 +0200"
  },
  "committer": {
    "name": "Helge Deller",
    "email": "deller@gmx.de",
    "time": "Sat May 17 13:52:40 2025 +0200"
  },
  "message": "target/hppa: Fix FPE exceptions\n\nImplement FP exception register #1 (lower 32-bits of 64-bit fr[0]).\nA proper implementation is necessary to allow the Linux kernel in\nsystem mode and the qemu linux-user to send proper si_code values\non SIGFPE signal.\n\nAlways set the T-bit on taken exception, and merge over- and underflow\nin system mode to just set overflow bit to mimic the behaviour I tested\non a physical machine.\n\nThe test program below can be used to verify correct behaviour. Note\nthat behaviour on SIGFPE may vary on different platforms. The program\nshould always detect the correct signal, but it may or may not be able\nto sucessfully continue afterwards.\n\n #define _GNU_SOURCE\n #include \u003csignal.h\u003e\n #include \u003cstdio.h\u003e\n #include \u003cfenv.h\u003e\n #include \u003cfloat.h\u003e\n\n static void fpe_func(int sig, siginfo_t *i, void *v) {\n    sigset_t set;\n    sigemptyset(\u0026set);\n    sigaddset(\u0026set, SIGFPE);\n    sigprocmask(SIG_UNBLOCK, \u0026set, NULL);\n    printf(\"GOT signal %d with si_code %ld\\n\", sig, i-\u003esi_code);\n }\n\n int main(int argc, char *argv[]) {\n    struct sigaction action \u003d {\n        .sa_sigaction \u003d fpe_func,\n        .sa_flags \u003d SA_RESTART|SA_SIGINFO };\n    sigaction(SIGFPE, \u0026action, 0);\n    feenableexcept(FE_OVERFLOW | FE_UNDERFLOW);\n    double x \u003d DBL_MIN;\n    return printf(\"%lf\\n\", argc \u003e 1\n        ? 1.7976931348623158E308*1.7976931348623158E308\n        : x / 10);\n }\n\nSigned-off-by: Helge Deller \u003cdeller@gmx.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a62d9d30831a3ff9df686ebcbde8b1b659a87dfa",
      "old_mode": 33188,
      "old_path": "target/hppa/fpu_helper.c",
      "new_id": "294ce0a9709f1aadae0d8daa0bda247d3d8ca0b3",
      "new_mode": 33188,
      "new_path": "target/hppa/fpu_helper.c"
    }
  ]
}
