nds32:Renaming file and fixing the unaligned access handler
cover nds32:Renaming file and fixing the unaligned access handler
The name of /proc/sys/nds32/unaligned_acess spelled wrong, so we renaming it to /proc/sys/nds32/unaligned_access.
The unaligned access handler in nds32 goes wrong when the immediate field of load/store instruction is negative. We fix it by recongnizing whether the immediate field is positive or negative and then change the value of immediate filed to unsigned integer number.
Nickhu (2):
nds32: Renaming the file for unaligned access
nds32: Fix the unaligned access handler
arch/nds32/mm/alignment.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
Signature · 1 line
2.17.0
PATCH 1/2 nds32: Renaming the file for unaligned access
Change the name of the file '/proc/sys/nds32/unaligned_acess' to '/proc/sys/nds32/unaligned_access'
--- arch/nds32/mm/alignment.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/nds32/mm/alignment.c +1 -1
@@ -552,7 +552,7 @@ static struct ctl_table alignment_tbl[3] = {static struct ctl_table nds32_sysctl_table[2 ] = { { - .procname ="unaligned_acess" , + .procname ="unaligned_access" , .mode =0555 , .child = alignment_tbl}, {}
Signature · 1 line
2.17.0
Re: [PATCH 1/2] nds32: Renaming the file for unaligned access
2018-05-07 14:45 GMT+08:00 Nickhu <[email protected]>:
Quoted 4 lines
Change the name of the file '
/proc/sys/nds32/unaligned_acess' to '/proc/sys/nds32/unaligned_access'Signed-off-by Nickhu <[email protected]>
Thank you, Nick.
PATCH 2/2 nds32: Fix the unaligned access handler
In reply to NickhuIf the kernel config 'CONFIG_ALIGNMENT_TRAP' and the file '/proc/sys/nds32/unaligned_access/enable' are set, the kernel unaligned access handler does not handle correctly when the value of immediate field is negative. This commit fixes the unaligned access handler in kernel.
--- arch/nds32/mm/alignment.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
arch/nds32/mm/alignment.c +5 -2
@@ -19,7 +19,7 @@#define RA (inst) (((inst) >> 15) & 0x1FUL)#define RB (inst) (((inst) >> 10) & 0x1FUL)#define SV (inst) (((inst) >> 8) & 0x3UL) -#define IMM (inst) (((inst) >> 0) & 0x3FFFUL) +#define IMM (inst) (((inst) >> 0) & 0x7FFFUL)#define RA3 (inst) (((inst) >> 3) & 0x7UL)#define RT3 (inst) (((inst) >> 6) & 0x7UL)
@@ -28,6 +28,9 @@#define RA5 (inst) (((inst) >> 0) & 0x1FUL)#define RT4 (inst) (((inst) >> 5) & 0xFUL) +#define GET_IMMSVAL (imm_value) \ + (((imm_value >> 14) & 0x1) ? (imm_value - 0x8000) : imm_value) +#define __get8_data (val,addr,err) \ __asm__( \ "1: lbi.bi %1, [%2], #1\n" \
@@ -467,7 +470,7 @@ static inline int do_32(unsigned long inst, struct pt_regs *regs) }if (imm) - shift =IMM (inst) * len; + shift =GET_IMMSVAL (IMM (inst)) * len;else shift = *idx_to_addr (regs,RB (inst)) <<SV (inst);
Signature · 1 line
2.17.0
Re: [PATCH 2/2] nds32: Fix the unaligned access handler
2018-05-07 14:45 GMT+08:00 Nickhu <[email protected]>:
Quoted 7 lines
If the kernel config '
CONFIG_ALIGNMENT_TRAP' and the file '/proc/sys/nds32/unaligned_access/enable' are set, the kernel unaligned access handler does not handle correctly when the value of immediate field is negative. This commit fixes the unaligned access handler in kernel.Signed-off-by Nickhu <[email protected]>
Thank you, Nick.