aboutsummaryrefslogtreecommitdiff
path: root/sim/cr16
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2014-04-05 17:55:13 +1030
committerAlan Modra <amodra@gmail.com>2014-04-09 07:07:06 +0930
commitb4ab4364239efcf0cec74e89a85d844d628138c0 (patch)
tree926ab41676f2482a78260bc59758606a53e4d1f3 /sim/cr16
parent9c97a0704e03c662b6afd92032c171fe6714b42d (diff)
downloadgdb-b4ab4364239efcf0cec74e89a85d844d628138c0.zip
gdb-b4ab4364239efcf0cec74e89a85d844d628138c0.tar.gz
gdb-b4ab4364239efcf0cec74e89a85d844d628138c0.tar.bz2
ppc476 icache workaround fix for bctr
I got the ppc476 workaround wrong. bctr (and bctrl) as the last instruction in a page can hit the icache bug if the preceding mtctr insn is close by, and the destination is in the first few instructions on the next page. This scenario can occur with code generated by gcc to implement switch statements, or in code generated to call by function pointer. To prevent the bctr problem it is also necessary to remove other instructions that otherwise would be safe. bfd/ * elf32-ppc.c (ppc_elf_relocate_section): Remove bctr from list of safe ppc476 insns at end of page. Also remove non-branch insns. Expand comments. ld/ * emultempl/ppc32elf.em (no_zero_padding, ppc_finish): New functions. (LDEMUL_FINISH): Define.
Diffstat (limited to 'sim/cr16')
0 files changed, 0 insertions, 0 deletions