Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 298858
b: refs/heads/master
c: e1d5c01
h: refs/heads/master
v: v3
  • Loading branch information
Chris Metcalf committed Apr 2, 2012
1 parent 6c032a3 commit 986f839
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b1760c847ff9d04fba7cdbef005a0ad805311c6d
refs/heads/master: e1d5c0195075abaa45cd04ca397dbeaa0d18c490
24 changes: 20 additions & 4 deletions trunk/arch/tile/kernel/intvec_32.S
Original file line number Diff line number Diff line change
Expand Up @@ -799,6 +799,10 @@ handle_interrupt:
* This routine takes a boolean in r30 indicating if this is an NMI.
* If so, we also expect a boolean in r31 indicating whether to
* re-enable the oprofile interrupts.
*
* Note that .Lresume_userspace is jumped to directly in several
* places, and we need to make sure r30 is set correctly in those
* callers as well.
*/
STD_ENTRY(interrupt_return)
/* If we're resuming to kernel space, don't check thread flags. */
Expand Down Expand Up @@ -1237,7 +1241,10 @@ handle_syscall:
bzt r30, 1f
jal do_syscall_trace
FEEDBACK_REENTER(handle_syscall)
1: j .Lresume_userspace /* jump into middle of interrupt_return */
1: {
movei r30, 0 /* not an NMI */
j .Lresume_userspace /* jump into middle of interrupt_return */
}

.Linvalid_syscall:
/* Report an invalid syscall back to the user program */
Expand All @@ -1246,7 +1253,10 @@ handle_syscall:
movei r28, -ENOSYS
}
sw r29, r28
j .Lresume_userspace /* jump into middle of interrupt_return */
{
movei r30, 0 /* not an NMI */
j .Lresume_userspace /* jump into middle of interrupt_return */
}
STD_ENDPROC(handle_syscall)

/* Return the address for oprofile to suppress in backtraces. */
Expand All @@ -1262,7 +1272,10 @@ STD_ENTRY(ret_from_fork)
jal sim_notify_fork
jal schedule_tail
FEEDBACK_REENTER(ret_from_fork)
j .Lresume_userspace /* jump into middle of interrupt_return */
{
movei r30, 0 /* not an NMI */
j .Lresume_userspace /* jump into middle of interrupt_return */
}
STD_ENDPROC(ret_from_fork)

/*
Expand Down Expand Up @@ -1376,7 +1389,10 @@ handle_ill:

jal send_sigtrap /* issue a SIGTRAP */
FEEDBACK_REENTER(handle_ill)
j .Lresume_userspace /* jump into middle of interrupt_return */
{
movei r30, 0 /* not an NMI */
j .Lresume_userspace /* jump into middle of interrupt_return */
}

.Ldispatch_normal_ill:
{
Expand Down
19 changes: 16 additions & 3 deletions trunk/arch/tile/kernel/intvec_64.S
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,10 @@ handle_interrupt:
* This routine takes a boolean in r30 indicating if this is an NMI.
* If so, we also expect a boolean in r31 indicating whether to
* re-enable the oprofile interrupts.
*
* Note that .Lresume_userspace is jumped to directly in several
* places, and we need to make sure r30 is set correctly in those
* callers as well.
*/
STD_ENTRY(interrupt_return)
/* If we're resuming to kernel space, don't check thread flags. */
Expand Down Expand Up @@ -1058,7 +1062,10 @@ handle_syscall:
}
FEEDBACK_REENTER(handle_syscall)

2: j .Lresume_userspace /* jump into middle of interrupt_return */
2: {
movei r30, 0 /* not an NMI */
j .Lresume_userspace /* jump into middle of interrupt_return */
}

.Lcompat_syscall:
/*
Expand Down Expand Up @@ -1092,7 +1099,10 @@ handle_syscall:
movei r28, -ENOSYS
}
st r29, r28
j .Lresume_userspace /* jump into middle of interrupt_return */
{
movei r30, 0 /* not an NMI */
j .Lresume_userspace /* jump into middle of interrupt_return */
}
STD_ENDPROC(handle_syscall)

/* Return the address for oprofile to suppress in backtraces. */
Expand All @@ -1108,7 +1118,10 @@ STD_ENTRY(ret_from_fork)
jal sim_notify_fork
jal schedule_tail
FEEDBACK_REENTER(ret_from_fork)
j .Lresume_userspace
{
movei r30, 0 /* not an NMI */
j .Lresume_userspace /* jump into middle of interrupt_return */
}
STD_ENDPROC(ret_from_fork)

/* Various stub interrupt handlers and syscall handlers */
Expand Down

0 comments on commit 986f839

Please sign in to comment.