diff options
Diffstat (limited to 'arch/microblaze/kernel/hw_exception_handler.S')
-rw-r--r-- | arch/microblaze/kernel/hw_exception_handler.S | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/microblaze/kernel/hw_exception_handler.S b/arch/microblaze/kernel/hw_exception_handler.S index 781195438ee6..25f6e07d8de8 100644 --- a/arch/microblaze/kernel/hw_exception_handler.S +++ b/arch/microblaze/kernel/hw_exception_handler.S | |||
@@ -945,11 +945,20 @@ store3: sbi r3, r4, 2; | |||
945 | store4: sbi r3, r4, 3; /* Delay slot */ | 945 | store4: sbi r3, r4, 3; /* Delay slot */ |
946 | ex_shw_vm: | 946 | ex_shw_vm: |
947 | /* Store the lower half-word, byte-by-byte into destination address */ | 947 | /* Store the lower half-word, byte-by-byte into destination address */ |
948 | #ifdef __MICROBLAZEEL__ | ||
949 | lbui r3, r5, 0; | ||
950 | store5: sbi r3, r4, 0; | ||
951 | lbui r3, r5, 1; | ||
952 | brid ret_from_exc; | ||
953 | store6: sbi r3, r4, 1; /* Delay slot */ | ||
954 | #else | ||
948 | lbui r3, r5, 2; | 955 | lbui r3, r5, 2; |
949 | store5: sbi r3, r4, 0; | 956 | store5: sbi r3, r4, 0; |
950 | lbui r3, r5, 3; | 957 | lbui r3, r5, 3; |
951 | brid ret_from_exc; | 958 | brid ret_from_exc; |
952 | store6: sbi r3, r4, 1; /* Delay slot */ | 959 | store6: sbi r3, r4, 1; /* Delay slot */ |
960 | #endif | ||
961 | |||
953 | ex_sw_end_vm: /* Exception handling of store word, ends. */ | 962 | ex_sw_end_vm: /* Exception handling of store word, ends. */ |
954 | 963 | ||
955 | /* We have to prevent cases that get/put_user macros get unaligned pointer | 964 | /* We have to prevent cases that get/put_user macros get unaligned pointer |