{"push_id":867670922,"size":1,"distinct_size":0,"ref":"refs/heads/<1447690698-20276-1-git-send-email-james.hogan@imgtec.com>","head":"84ac01e5abc4c110fb72205810b64fca84d913a0","before":"046e639738141192d9c9bf83212dc6e40e3c9460","commits":[{"sha":"84ac01e5abc4c110fb72205810b64fca84d913a0","author":{"email":"547fa85bb3888a0222eed8ec39e36708605c6d53@imgtec.com","name":"James Hogan"},"message":"target-mips: Fix exceptions while UX=0\n\nCommit 01f728857941 (\"target-mips: Status.UX/SX/KX enable 32-bit address\nwrapping\") added a new hflag MIPS_HFLAG_AWRAP, which indicates that\n64-bit addressing is disallowed in the current mode, so hflag users\ndon't need to worry about the complexities of working that out, for\nexample checking both MIPS_HFLAG_KSU and MIPS_HFLAG_UX.\n\nHowever when exceptions are taken outside of exception level,\nmips_cpu_do_interrupt() manipulates the env->hflags directly rather than\nusing compute_hflags() to update them, and this code wasn't updated\naccordingly. As a result, when UX is cleared, MIPS_HFLAG_AWRAP is set,\nbut it doesn't get cleared on entry back into kernel mode due to an\nexception. Kernel mode then cannot access the 64-bit segments resulting\nin a nested exception loop.\n\nFix by updating mips_cpu_do_interrupt() to clear the MIPS_HFLAG_WRAP\nflag when necessary, according to compute_hflags().\n\nFixes: 01f728857941 (\"target-mips: Status.UX/SX/KX enable 32-bit...\")\nSigned-off-by: James Hogan <james.hogan@imgtec.com>\nCc: Leon Alrae <leon.alrae@imgtec.com>\nCc: Aurelien Jarno <aurelien@aurel32.net>\nMessage-Id: <1447690698-20276-1-git-send-email-james.hogan@imgtec.com>","distinct":false,"url":"https://api.github.com/repos/famz/qemu-patchew/commits/84ac01e5abc4c110fb72205810b64fca84d913a0"}]}