Skip to contentSkip to conversation

nds32: fix ptrace and interrupt register overflow

PATCH Superseded Macpaul Lin 1 participant 6 messages Mar 11, 2012 – Mar 19, 2012 ptrace support

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 nds32: fix ptrace and interrupt register overflow

Fix ptrace and interrupt register overflow warning. Add missing P0 and P1 (r26 and r27) into register lists. These register are usually used in OS.

---
 arch/nds32/include/asm/ptrace.h |    2 ++
 arch/nds32/lib/interrupts.c     |    2 +-
 2 files changed, 3 insertions(+), 1 deletions(-)
arch/nds32/include/asm/ptrace.h +2 -0
index 4336083..ee181b2 100644
@@ -38,6 +38,8 @@ struct pt_regs {
 	NDS32_REG d1hi;
 	NDS32_REG d1lo;
 	NDS32_REG r[26];	/* r0 - r25 */
+	NDS32_REG p0;		/* r26 - used by OS */
+	NDS32_REG p1;		/* r27 - used by OS */
 	NDS32_REG fp;		/* r28 */
 	NDS32_REG gp;		/* r29 */
 	NDS32_REG lp;		/* r30 */
arch/nds32/lib/interrupts.c +1 -1
index 974d52a..ca8c227 100644
@@ -91,7 +91,7 @@ void show_regs(struct pt_regs *regs)
 	printf("D1H: %08lx  D1L: %08lx  D0H: %08lx  D0L: %08lx\n",
 		regs->d1hi, regs->d1lo, regs->d0hi, regs->d0lo);
 	printf("r27: %08lx  r26: %08lx  r25: %08lx  r24: %08lx\n",
-		regs->r[27], regs->r[26], regs->r[25], regs->r[24]);
+		regs->p1, regs->p0, regs->r[25], regs->r[24]);
 	printf("r23: %08lx  r22: %08lx  r21: %08lx  r20: %08lx\n",
 		regs->r[23], regs->r[22], regs->r[21], regs->r[20]);
 	printf("r19: %08lx  r18: %08lx  r17: %08lx  r16: %08lx\n",
Signature · 1 line
1.7.5.4
#1 lore raw

PATCH 1/2 nds32: fix ptrace and interrupt register overflow

Hi Macpaul,

2012/3/11 Macpaul Lin <[email protected]>

Quoted 6 lines

Fix ptrace and interrupt register overflow warning. Add missing P0 and P1 (r26 and r27) into register lists. These register are usually used in OS.

Applied to u-boot-nds32/master
Thanks.

Signature · 2 lines
Best regards,
Macpaul Lin
#2 lore raw

PATCH v2 1/2 nds32: fix ptrace and interrupt register overflow

In reply to Macpaul Lin

Fix ptrace and interrupt register overflow warning. Add missing P0 and P1 (r26 and r27) into register lists. These register are usually used in OS.

---
Change for V2:
- no change.

 arch/nds32/include/asm/ptrace.h |    2 ++
 arch/nds32/lib/interrupts.c     |    2 +-
 2 files changed, 3 insertions(+), 1 deletions(-)
arch/nds32/include/asm/ptrace.h +2 -0
index 4336083..ee181b2 100644
@@ -38,6 +38,8 @@ struct pt_regs {
 	NDS32_REG d1hi;
 	NDS32_REG d1lo;
 	NDS32_REG r[26];	/* r0 - r25 */
+	NDS32_REG p0;		/* r26 - used by OS */
+	NDS32_REG p1;		/* r27 - used by OS */
 	NDS32_REG fp;		/* r28 */
 	NDS32_REG gp;		/* r29 */
 	NDS32_REG lp;		/* r30 */
arch/nds32/lib/interrupts.c +1 -1
index 974d52a..ca8c227 100644
@@ -91,7 +91,7 @@ void show_regs(struct pt_regs *regs)
 	printf("D1H: %08lx  D1L: %08lx  D0H: %08lx  D0L: %08lx\n",
 		regs->d1hi, regs->d1lo, regs->d0hi, regs->d0lo);
 	printf("r27: %08lx  r26: %08lx  r25: %08lx  r24: %08lx\n",
-		regs->r[27], regs->r[26], regs->r[25], regs->r[24]);
+		regs->p1, regs->p0, regs->r[25], regs->r[24]);
 	printf("r23: %08lx  r22: %08lx  r21: %08lx  r20: %08lx\n",
 		regs->r[23], regs->r[22], regs->r[21], regs->r[20]);
 	printf("r19: %08lx  r18: %08lx  r17: %08lx  r16: %08lx\n",
Signature · 1 line
1.7.5.4
#3 lore raw

PATCH v2 2/2 nds32/n1213: correct vector table in start.S

Correct definition of vector table in start.S

---
Changes for v2:
- fix symbol declaration error in start.S

 arch/nds32/cpu/n1213/start.S |   22 +++++++++++++++++++---
 1 files changed, 19 insertions(+), 3 deletions(-)
arch/nds32/cpu/n1213/start.S +19 -3
index 1d1fcf7..889bf8b 100644
@@ -68,15 +68,17 @@ _start:	j	reset
 	j	tlb_not_present
 	j	tlb_misc
 	j	tlb_vlpt_miss
-	j	cache_parity_error
+	j	machine_error
 	j	debug
 	j	general_exception
+	j	syscall
 	j	internal_interrupt		! H0I
 	j	internal_interrupt		! H1I
 	j	internal_interrupt		! H2I
 	j	internal_interrupt		! H3I
 	j	internal_interrupt		! H4I
 	j	internal_interrupt		! H5I
+	j	software_interrupt		! S0I
 
 	.balign 16
 
@@ -477,7 +479,7 @@ tlb_vlpt_miss:
 	bal	do_interruption
 
 	.align	5
-cache_parity_error:
+machine_error:
 	SAVE_ALL
 	move	$r0, $sp			! To get the kernel stack
 	li	$r1, 5				! Determine interruption type
@@ -498,13 +500,27 @@ general_exception:
 	bal	do_interruption
 
 	.align	5
-internal_interrupt:
+syscall:
 	SAVE_ALL
 	move	$r0, $sp			! To get the kernel stack
 	li	$r1, 8				! Determine interruption type
 	bal	do_interruption
 
 	.align	5
+internal_interrupt:
+	SAVE_ALL
+	move	$r0, $sp			! To get the kernel stack
+	li	$r1, 9				! Determine interruption type
+	bal	do_interruption
+
+	.align	5
+software_interrupt:
+	SAVE_ALL
+	move	$r0, $sp			! To get the kernel stack
+	li	$r1, 10				! Determine interruption type
+	bal	do_interruption
+
+	.align	5
 
 /*
  * void reset_cpu(ulong addr);
Signature · 1 line
1.7.5.4
#4 lore raw

PATCH v2 2/2 nds32/n1213: correct vector table in start.S

Hi Macpaul,

2012/3/11 Macpaul Lin <[email protected]>

Quoted 7 lines

Correct definition of vector table in start.S

---
Changes for v2:
- fix symbol declaration error in start.S

Applied to u-boot-nds32/master
Thanks.

Signature · 2 lines
Best regards,
Macpaul Lin
#5 lore raw

PATCH 2/2 nds32/n1213: correct vector table in start.S

In reply to Macpaul Lin

Correct definition of vector table in start.S

---
 arch/nds32/cpu/n1213/start.S |   22 +++++++++++++++++++---
 1 files changed, 19 insertions(+), 3 deletions(-)
arch/nds32/cpu/n1213/start.S +19 -3
index 1d1fcf7..518628a 100644
@@ -68,15 +68,17 @@ _start:	j	reset
 	j	tlb_not_present
 	j	tlb_misc
 	j	tlb_vlpt_miss
-	j	cache_parity_error
+	j	machine_error
 	j	debug
 	j	general_exception
+	j	syscall
 	j	internal_interrupt		! H0I
 	j	internal_interrupt		! H1I
 	j	internal_interrupt		! H2I
 	j	internal_interrupt		! H3I
 	j	internal_interrupt		! H4I
 	j	internal_interrupt		! H5I
+	j	software_interrupt		! S0I
 
 	.balign 16
 
@@ -477,7 +479,7 @@ tlb_vlpt_miss:
 	bal	do_interruption
 
 	.align	5
-cache_parity_error:
+machine_error:
 	SAVE_ALL
 	move	$r0, $sp			! To get the kernel stack
 	li	$r1, 5				! Determine interruption type
@@ -498,13 +500,27 @@ general_exception:
 	bal	do_interruption
 
 	.align	5
-internal_interrupt:
+syscall
 	SAVE_ALL
 	move	$r0, $sp			! To get the kernel stack
 	li	$r1, 8				! Determine interruption type
 	bal	do_interruption
 
 	.align	5
+internal_interrupt:
+	SAVE_ALL
+	move	$r0, $sp			! To get the kernel stack
+	li	$r1, 9				! Determine interruption type
+	bal	do_interruption
+
+	.align	5
+software_interrupt:
+	SAVE_ALL
+	move	$r0, $sp			! To get the kernel stack
+	li	$r1, 10				! Determine interruption type
+	bal	do_interruption
+
+	.align	5
 
 /*
  * void reset_cpu(ulong addr);
Signature · 1 line
1.7.5.4