From 7935ef724cd7359ed97e6ae3d90ebc8f07dd7e1f Mon Sep 17 00:00:00 2001 From: Nathan Rossi Date: Wed, 13 Dec 2017 16:58:34 -0800 Subject: gcc-source: Add all Xilinx MicroBlaze GCC 7.2 patches Add all the Xilinx patches for MicroBlaze, this includes a number of bug fixes, testsuite fixes, feature improvements and additional feature support. Important changes: * v10.0 - CPU support * v10.0 - Bit-field instruction support * v10.0 - 8-stage pipeline aka 'frequency' optimized * Size optimized implementations for shift instructions Signed-off-by: Nathan Rossi Signed-off-by: Manjukumar Matha --- ...fixed-missing-save-of-r18-in-fast_interru.patch | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 meta-xilinx-bsp/recipes-microblaze/gcc/gcc-7/0015-MicroBlaze-fixed-missing-save-of-r18-in-fast_interru.patch (limited to 'meta-xilinx-bsp/recipes-microblaze/gcc/gcc-7/0015-MicroBlaze-fixed-missing-save-of-r18-in-fast_interru.patch') diff --git a/meta-xilinx-bsp/recipes-microblaze/gcc/gcc-7/0015-MicroBlaze-fixed-missing-save-of-r18-in-fast_interru.patch b/meta-xilinx-bsp/recipes-microblaze/gcc/gcc-7/0015-MicroBlaze-fixed-missing-save-of-r18-in-fast_interru.patch new file mode 100644 index 00000000..e75bebeb --- /dev/null +++ b/meta-xilinx-bsp/recipes-microblaze/gcc/gcc-7/0015-MicroBlaze-fixed-missing-save-of-r18-in-fast_interru.patch @@ -0,0 +1,46 @@ +From 79ea36649467aea6045a49c7d016f8f9245efb8c Mon Sep 17 00:00:00 2001 +From: Mahesh Bodapati +Date: Sat, 26 Aug 2017 19:21:29 -0700 +Subject: [PATCH] MicroBlaze fixed missing save of r18 in fast_interrupt + +Fixed missing save of r18 in fast_interrupt. Register 18 is used as a +clobber register, and must be stored when entering a fast_interrupt. +Before this fix, register 18 was only saved if it was used directly in +the interrupt function. + +However, if the fast_interrupt function called a function that used +r18, the register would not be saved, and thus be mangled +upon returning from the interrupt. + +Changelog + +2014-02-27 Klaus Petersen + + * gcc/config/microblaze/microblaze.c: Check for fast_interrupt in + microblaze_must_save_register. + +Signed-off-by: Klaus Petersen +Signed-off-by: David Holsgrove +Signed-off-by: Mahesh Bodapati +Signed-off-by: Manjukumar Matha +Upstream-Status: Pending +--- + gcc/config/microblaze/microblaze.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gcc/config/microblaze/microblaze.c b/gcc/config/microblaze/microblaze.c +index 15080db539..558796cad9 100644 +--- a/gcc/config/microblaze/microblaze.c ++++ b/gcc/config/microblaze/microblaze.c +@@ -1943,7 +1943,7 @@ microblaze_must_save_register (int regno) + { + if (df_regs_ever_live_p (regno) + || regno == MB_ABI_MSR_SAVE_REG +- || (interrupt_handler ++ || ((interrupt_handler || fast_interrupt) + && (regno == MB_ABI_ASM_TEMP_REGNUM + || regno == MB_ABI_EXCEPTION_RETURN_ADDR_REGNUM))) + return 1; +-- +2.14.2 + -- cgit v1.2.3-54-g00ecf