diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2006-02-01 06:06:38 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-02-01 11:53:24 -0500 |
commit | 54dfe5dd9abc547f63060d132dad2c024a47de1e (patch) | |
tree | 3126ab06c684ecd9766cc47d7413dd2534629173 /arch/s390/kernel/compat_wrapper.S | |
parent | 1ab865c146ef5151828f0693f1b983891cf40ff1 (diff) |
[PATCH] s390: Add support for new syscalls/TIF_RESTORE_SIGMASK
Add support for the new *at, pselect6 and ppoll system calls. This includes
adding required support for TIF_RESTORE_SIGMASK.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/s390/kernel/compat_wrapper.S')
-rw-r--r-- | arch/s390/kernel/compat_wrapper.S | 137 |
1 files changed, 132 insertions, 5 deletions
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S index cfde1905d07d..6e27ac68ec3f 100644 --- a/arch/s390/kernel/compat_wrapper.S +++ b/arch/s390/kernel/compat_wrapper.S | |||
@@ -1,9 +1,8 @@ | |||
1 | /* | 1 | /* |
2 | * arch/s390/kernel/sys_wrapper31.S | 2 | * arch/s390/kernel/compat_wrapper.S |
3 | * wrapper for 31 bit compatible system calls. | 3 | * wrapper for 31 bit compatible system calls. |
4 | * | 4 | * |
5 | * S390 version | 5 | * Copyright (C) IBM Corp. 2000,2006 |
6 | * Copyright (C) 2000 IBM Deutschland Entwicklung GmbH, IBM Corporation | ||
7 | * Author(s): Gerhard Tonn (ton@de.ibm.com), | 6 | * Author(s): Gerhard Tonn (ton@de.ibm.com), |
8 | * Thomas Spatzier (tspat@de.ibm.com) | 7 | * Thomas Spatzier (tspat@de.ibm.com) |
9 | */ | 8 | */ |
@@ -288,7 +287,12 @@ sys32_setregid16_wrapper: | |||
288 | llgfr %r3,%r3 # __kernel_old_gid_emu31_t | 287 | llgfr %r3,%r3 # __kernel_old_gid_emu31_t |
289 | jg sys32_setregid16 # branch to system call | 288 | jg sys32_setregid16 # branch to system call |
290 | 289 | ||
291 | #sys32_sigsuspend_wrapper # done in sigsuspend_glue | 290 | .globl sys_sigsuspend_wrapper |
291 | sys_sigsuspend_wrapper: | ||
292 | lgfr %r2,%r2 # int | ||
293 | lgfr %r3,%r3 # int | ||
294 | llgfr %r4,%r4 # old_sigset_t | ||
295 | jg sys_sigsuspend | ||
292 | 296 | ||
293 | .globl compat_sys_sigpending_wrapper | 297 | .globl compat_sys_sigpending_wrapper |
294 | compat_sys_sigpending_wrapper: | 298 | compat_sys_sigpending_wrapper: |
@@ -855,7 +859,11 @@ sys32_rt_sigqueueinfo_wrapper: | |||
855 | llgtr %r4,%r4 # siginfo_emu31_t * | 859 | llgtr %r4,%r4 # siginfo_emu31_t * |
856 | jg sys32_rt_sigqueueinfo # branch to system call | 860 | jg sys32_rt_sigqueueinfo # branch to system call |
857 | 861 | ||
858 | #sys32_rt_sigsuspend_wrapper # done in rt_sigsuspend_glue | 862 | .globl compat_sys_rt_sigsuspend_wrapper |
863 | compat_sys_rt_sigsuspend_wrapper: | ||
864 | llgtr %r2,%r2 # compat_sigset_t * | ||
865 | llgfr %r3,%r3 # compat_size_t | ||
866 | jg compat_sys_rt_sigsuspend | ||
859 | 867 | ||
860 | .globl sys32_pread64_wrapper | 868 | .globl sys32_pread64_wrapper |
861 | sys32_pread64_wrapper: | 869 | sys32_pread64_wrapper: |
@@ -1475,3 +1483,122 @@ sys_inotify_rm_watch_wrapper: | |||
1475 | lgfr %r2,%r2 # int | 1483 | lgfr %r2,%r2 # int |
1476 | llgfr %r3,%r3 # u32 | 1484 | llgfr %r3,%r3 # u32 |
1477 | jg sys_inotify_rm_watch | 1485 | jg sys_inotify_rm_watch |
1486 | |||
1487 | .globl compat_sys_openat_wrapper | ||
1488 | compat_sys_openat_wrapper: | ||
1489 | lgfr %r2,%r2 # int | ||
1490 | llgtr %r3,%r3 # const char * | ||
1491 | lgfr %r4,%r4 # int | ||
1492 | lgfr %r5,%r5 # int | ||
1493 | jg compat_sys_openat | ||
1494 | |||
1495 | .globl sys_mkdirat_wrapper | ||
1496 | sys_mkdirat_wrapper: | ||
1497 | lgfr %r2,%r2 # int | ||
1498 | llgtr %r3,%r3 # const char * | ||
1499 | lgfr %r4,%r4 # int | ||
1500 | jg sys_mkdirat | ||
1501 | |||
1502 | .globl sys_mknodat_wrapper | ||
1503 | sys_mknodat_wrapper: | ||
1504 | lgfr %r2,%r2 # int | ||
1505 | llgtr %r3,%r3 # const char * | ||
1506 | lgfr %r4,%r4 # int | ||
1507 | llgfr %r5,%r5 # unsigned int | ||
1508 | jg sys_mknodat | ||
1509 | |||
1510 | .globl sys_fchownat_wrapper | ||
1511 | sys_fchownat_wrapper: | ||
1512 | lgfr %r2,%r2 # int | ||
1513 | llgtr %r3,%r3 # const char * | ||
1514 | llgfr %r4,%r4 # uid_t | ||
1515 | llgfr %r5,%r5 # gid_t | ||
1516 | lgfr %r6,%r6 # int | ||
1517 | jg sys_fchownat | ||
1518 | |||
1519 | .globl compat_sys_futimesat_wrapper | ||
1520 | compat_sys_futimesat_wrapper: | ||
1521 | lgfr %r2,%r2 # int | ||
1522 | llgtr %r3,%r3 # char * | ||
1523 | llgtr %r4,%r4 # struct timeval * | ||
1524 | jg compat_sys_futimesat | ||
1525 | |||
1526 | .globl compat_sys_newfstatat_wrapper | ||
1527 | compat_sys_newfstatat_wrapper: | ||
1528 | lgfr %r2,%r2 # int | ||
1529 | llgtr %r3,%r3 # char * | ||
1530 | llgtr %r4,%r4 # struct stat * | ||
1531 | lgfr %r5,%r5 # int | ||
1532 | jg compat_sys_newfstatat | ||
1533 | |||
1534 | .globl sys_unlinkat_wrapper | ||
1535 | sys_unlinkat_wrapper: | ||
1536 | lgfr %r2,%r2 # int | ||
1537 | llgtr %r3,%r3 # const char * | ||
1538 | lgfr %r4,%r4 # int | ||
1539 | jg sys_unlinkat | ||
1540 | |||
1541 | .globl sys_renameat_wrapper | ||
1542 | sys_renameat_wrapper: | ||
1543 | lgfr %r2,%r2 # int | ||
1544 | llgtr %r3,%r3 # const char * | ||
1545 | lgfr %r4,%r4 # int | ||
1546 | llgtr %r5,%r5 # const char * | ||
1547 | jg sys_renameat | ||
1548 | |||
1549 | .globl sys_linkat_wrapper | ||
1550 | sys_linkat_wrapper: | ||
1551 | lgfr %r2,%r2 # int | ||
1552 | llgtr %r3,%r3 # const char * | ||
1553 | lgfr %r4,%r4 # int | ||
1554 | llgtr %r5,%r5 # const char * | ||
1555 | jg sys_linkat | ||
1556 | |||
1557 | .globl sys_symlinkat_wrapper | ||
1558 | sys_symlinkat_wrapper: | ||
1559 | llgtr %r2,%r2 # const char * | ||
1560 | lgfr %r3,%r3 # int | ||
1561 | llgtr %r4,%r4 # const char * | ||
1562 | jg sys_symlinkat | ||
1563 | |||
1564 | .globl sys_readlinkat_wrapper | ||
1565 | sys_readlinkat_wrapper: | ||
1566 | lgfr %r2,%r2 # int | ||
1567 | llgtr %r3,%r3 # const char * | ||
1568 | llgtr %r4,%r4 # char * | ||
1569 | lgfr %r5,%r5 # int | ||
1570 | jg sys_readlinkat | ||
1571 | |||
1572 | .globl sys_fchmodat_wrapper | ||
1573 | sys_fchmodat_wrapper: | ||
1574 | lgfr %r2,%r2 # int | ||
1575 | llgtr %r3,%r3 # const char * | ||
1576 | llgfr %r4,%r4 # mode_t | ||
1577 | jg sys_fchmodat | ||
1578 | |||
1579 | .globl sys_faccessat_wrapper | ||
1580 | sys_faccessat_wrapper: | ||
1581 | lgfr %r2,%r2 # int | ||
1582 | llgtr %r3,%r3 # const char * | ||
1583 | lgfr %r4,%r4 # int | ||
1584 | jg sys_faccessat | ||
1585 | |||
1586 | .globl compat_sys_pselect6_wrapper | ||
1587 | compat_sys_pselect6_wrapper: | ||
1588 | lgfr %r2,%r2 # int | ||
1589 | llgtr %r3,%r3 # fd_set * | ||
1590 | llgtr %r4,%r4 # fd_set * | ||
1591 | llgtr %r5,%r5 # fd_set * | ||
1592 | llgtr %r6,%r6 # struct timespec * | ||
1593 | llgt %r0,164(%r15) # void * | ||
1594 | stg %r0,160(%r15) | ||
1595 | jg compat_sys_pselect6 | ||
1596 | |||
1597 | .globl compat_sys_ppoll_wrapper | ||
1598 | compat_sys_ppoll_wrapper: | ||
1599 | llgtr %r2,%r2 # struct pollfd * | ||
1600 | llgfr %r3,%r3 # unsigned int | ||
1601 | llgtr %r4,%r4 # struct timespec * | ||
1602 | llgtr %r5,%r5 # const sigset_t * | ||
1603 | llgfr %r6,%r6 # size_t | ||
1604 | jg compat_sys_ppoll | ||