From 54b8f87dadb0cf99ccacfedbc5212ebb747f9698 Mon Sep 17 00:00:00 2001 From: Lars-Peter Clausen Date: Tue, 26 Jul 2011 08:18:32 +0200 Subject: [PATCH] lm32: Disable interrupts while restoring irq and syscall stackframe --- arch/lm32/boot/dts/mm1.dts | 4 ++-- arch/lm32/kernel/entry.S | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/arch/lm32/boot/dts/mm1.dts b/arch/lm32/boot/dts/mm1.dts index b3d7dff231de2..24535c1225fe1 100644 --- a/arch/lm32/boot/dts/mm1.dts +++ b/arch/lm32/boot/dts/mm1.dts @@ -6,12 +6,12 @@ interrupt-parent = <&pic>; chosen { - bootargs = "root=/dev/root"; + bootargs = "root=/dev/ram0 rootfstype=ext2 init=/bin/foobar.sh"; }; memory@0 { device_type = "memory"; - reg = <0x00000000 0x8000000>; + reg = <0x40000000 0x8000000>; }; cpus { diff --git a/arch/lm32/kernel/entry.S b/arch/lm32/kernel/entry.S index 37ee1466bcd86..e522718913472 100644 --- a/arch/lm32/kernel/entry.S +++ b/arch/lm32/kernel/entry.S @@ -261,6 +261,9 @@ ret /* restore all caller saved registers saved in _save_irq_frame and return from exception */ _restore_irq_frame_and_return: + rcsr r2, IE + andi r3, r2, 0xfffe + wcsr IE, r3 lw r2, (sp+132) mvhi r1, hi(kernel_mode) ori r1, r1, lo(kernel_mode) @@ -332,6 +335,9 @@ _save_syscall_frame: #define RETURN_FROM_SYSCALL_OR_EXCEPTION(label, addr_register, return_instr) \ label: \ + rcsr r2, IE; \ + andi r3, r2, 0xfffe; \ + wcsr IE, r3; \ lw r2, (sp+132); \ mvhi r1, hi(kernel_mode); \ ori r1, r1, lo(kernel_mode); \