diff options
Diffstat (limited to 'arch/sparc/kernel/entry.S')
-rw-r--r-- | arch/sparc/kernel/entry.S | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/arch/sparc/kernel/entry.S b/arch/sparc/kernel/entry.S index 4bcfe54f878d..e8cdf715a546 100644 --- a/arch/sparc/kernel/entry.S +++ b/arch/sparc/kernel/entry.S | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <asm/vaddrs.h> | 19 | #include <asm/vaddrs.h> |
20 | #include <asm/memreg.h> | 20 | #include <asm/memreg.h> |
21 | #include <asm/page.h> | 21 | #include <asm/page.h> |
22 | #include <asm/pgtable.h> | ||
22 | #ifdef CONFIG_SUN4 | 23 | #ifdef CONFIG_SUN4 |
23 | #include <asm/pgtsun4.h> | 24 | #include <asm/pgtsun4.h> |
24 | #else | 25 | #else |
@@ -1195,8 +1196,9 @@ sys_rt_sigreturn: | |||
1195 | be 1f | 1196 | be 1f |
1196 | nop | 1197 | nop |
1197 | 1198 | ||
1199 | add %sp, STACKFRAME_SZ, %o0 | ||
1198 | call syscall_trace | 1200 | call syscall_trace |
1199 | nop | 1201 | mov 1, %o1 |
1200 | 1202 | ||
1201 | 1: | 1203 | 1: |
1202 | /* We are returning to a signal handler. */ | 1204 | /* We are returning to a signal handler. */ |
@@ -1286,8 +1288,12 @@ linux_fast_syscall: | |||
1286 | mov %i3, %o3 | 1288 | mov %i3, %o3 |
1287 | 1289 | ||
1288 | linux_syscall_trace: | 1290 | linux_syscall_trace: |
1291 | add %sp, STACKFRAME_SZ, %o0 | ||
1289 | call syscall_trace | 1292 | call syscall_trace |
1290 | nop | 1293 | mov 0, %o1 |
1294 | cmp %o0, 0 | ||
1295 | bne 3f | ||
1296 | mov -ENOSYS, %o0 | ||
1291 | mov %i0, %o0 | 1297 | mov %i0, %o0 |
1292 | mov %i1, %o1 | 1298 | mov %i1, %o1 |
1293 | mov %i2, %o2 | 1299 | mov %i2, %o2 |
@@ -1317,7 +1323,6 @@ linux_sparc_syscall: | |||
1317 | bne linux_fast_syscall | 1323 | bne linux_fast_syscall |
1318 | /* Just do first insn from SAVE_ALL in the delay slot */ | 1324 | /* Just do first insn from SAVE_ALL in the delay slot */ |
1319 | 1325 | ||
1320 | .globl syscall_is_too_hard | ||
1321 | syscall_is_too_hard: | 1326 | syscall_is_too_hard: |
1322 | SAVE_ALL_HEAD | 1327 | SAVE_ALL_HEAD |
1323 | rd %wim, %l3 | 1328 | rd %wim, %l3 |
@@ -1337,6 +1342,7 @@ syscall_is_too_hard: | |||
1337 | call %l7 | 1342 | call %l7 |
1338 | mov %i5, %o5 | 1343 | mov %i5, %o5 |
1339 | 1344 | ||
1345 | 3: | ||
1340 | st %o0, [%sp + STACKFRAME_SZ + PT_I0] | 1346 | st %o0, [%sp + STACKFRAME_SZ + PT_I0] |
1341 | 1347 | ||
1342 | ret_sys_call: | 1348 | ret_sys_call: |
@@ -1374,6 +1380,8 @@ ret_sys_call: | |||
1374 | st %l2, [%sp + STACKFRAME_SZ + PT_NPC] | 1380 | st %l2, [%sp + STACKFRAME_SZ + PT_NPC] |
1375 | 1381 | ||
1376 | linux_syscall_trace2: | 1382 | linux_syscall_trace2: |
1383 | add %sp, STACKFRAME_SZ, %o0 | ||
1384 | mov 1, %o1 | ||
1377 | call syscall_trace | 1385 | call syscall_trace |
1378 | add %l1, 0x4, %l2 /* npc = npc+4 */ | 1386 | add %l1, 0x4, %l2 /* npc = npc+4 */ |
1379 | st %l1, [%sp + STACKFRAME_SZ + PT_PC] | 1387 | st %l1, [%sp + STACKFRAME_SZ + PT_PC] |
@@ -1544,8 +1552,7 @@ kgdb_trap_low: | |||
1544 | #endif | 1552 | #endif |
1545 | 1553 | ||
1546 | .align 4 | 1554 | .align 4 |
1547 | .globl __handle_exception, flush_patch_exception | 1555 | .globl flush_patch_exception |
1548 | __handle_exception: | ||
1549 | flush_patch_exception: | 1556 | flush_patch_exception: |
1550 | FLUSH_ALL_KERNEL_WINDOWS; | 1557 | FLUSH_ALL_KERNEL_WINDOWS; |
1551 | ldd [%o0], %o6 | 1558 | ldd [%o0], %o6 |