| .. | .. |
|---|
| 10 | 10 | |
|---|
| 11 | 11 | #include <linux/linkage.h> |
|---|
| 12 | 12 | #include <linux/errno.h> |
|---|
| 13 | +#include <linux/pgtable.h> |
|---|
| 13 | 14 | |
|---|
| 14 | 15 | #include <asm/head.h> |
|---|
| 15 | 16 | #include <asm/asi.h> |
|---|
| .. | .. |
|---|
| 20 | 21 | #include <asm/psr.h> |
|---|
| 21 | 22 | #include <asm/vaddrs.h> |
|---|
| 22 | 23 | #include <asm/page.h> |
|---|
| 23 | | -#include <asm/pgtable.h> |
|---|
| 24 | 24 | #include <asm/winmacro.h> |
|---|
| 25 | 25 | #include <asm/signal.h> |
|---|
| 26 | 26 | #include <asm/obio.h> |
|---|
| .. | .. |
|---|
| 869 | 869 | ld [%curptr + TI_TASK], %o4 |
|---|
| 870 | 870 | rd %psr, %g4 |
|---|
| 871 | 871 | WRITE_PAUSE |
|---|
| 872 | | - mov SIGCHLD, %o0 ! arg0: clone flags |
|---|
| 873 | 872 | rd %wim, %g5 |
|---|
| 874 | 873 | WRITE_PAUSE |
|---|
| 875 | | - mov %fp, %o1 ! arg1: usp |
|---|
| 876 | 874 | std %g4, [%o4 + AOFF_task_thread + AOFF_thread_fork_kpsr] |
|---|
| 877 | | - add %sp, STACKFRAME_SZ, %o2 ! arg2: pt_regs ptr |
|---|
| 878 | | - mov 0, %o3 |
|---|
| 879 | | - call sparc_do_fork |
|---|
| 875 | + add %sp, STACKFRAME_SZ, %o0 |
|---|
| 876 | + call sparc_fork |
|---|
| 880 | 877 | mov %l5, %o7 |
|---|
| 881 | 878 | |
|---|
| 882 | 879 | /* Whee, kernel threads! */ |
|---|
| .. | .. |
|---|
| 888 | 885 | ld [%curptr + TI_TASK], %o4 |
|---|
| 889 | 886 | rd %psr, %g4 |
|---|
| 890 | 887 | WRITE_PAUSE |
|---|
| 891 | | - |
|---|
| 892 | | - /* arg0,1: flags,usp -- loaded already */ |
|---|
| 893 | | - cmp %o1, 0x0 ! Is new_usp NULL? |
|---|
| 894 | 888 | rd %wim, %g5 |
|---|
| 895 | 889 | WRITE_PAUSE |
|---|
| 896 | | - be,a 1f |
|---|
| 897 | | - mov %fp, %o1 ! yes, use callers usp |
|---|
| 898 | | - andn %o1, 7, %o1 ! no, align to 8 bytes |
|---|
| 899 | | -1: |
|---|
| 900 | 890 | std %g4, [%o4 + AOFF_task_thread + AOFF_thread_fork_kpsr] |
|---|
| 901 | | - add %sp, STACKFRAME_SZ, %o2 ! arg2: pt_regs ptr |
|---|
| 902 | | - mov 0, %o3 |
|---|
| 903 | | - call sparc_do_fork |
|---|
| 891 | + add %sp, STACKFRAME_SZ, %o0 |
|---|
| 892 | + call sparc_clone |
|---|
| 904 | 893 | mov %l5, %o7 |
|---|
| 905 | 894 | |
|---|
| 906 | 895 | /* Whee, real vfork! */ |
|---|
| .. | .. |
|---|
| 914 | 903 | rd %wim, %g5 |
|---|
| 915 | 904 | WRITE_PAUSE |
|---|
| 916 | 905 | std %g4, [%o4 + AOFF_task_thread + AOFF_thread_fork_kpsr] |
|---|
| 917 | | - sethi %hi(0x4000 | 0x0100 | SIGCHLD), %o0 |
|---|
| 918 | | - mov %fp, %o1 |
|---|
| 919 | | - or %o0, %lo(0x4000 | 0x0100 | SIGCHLD), %o0 |
|---|
| 920 | | - sethi %hi(sparc_do_fork), %l1 |
|---|
| 921 | | - mov 0, %o3 |
|---|
| 922 | | - jmpl %l1 + %lo(sparc_do_fork), %g0 |
|---|
| 923 | | - add %sp, STACKFRAME_SZ, %o2 |
|---|
| 906 | + sethi %hi(sparc_vfork), %l1 |
|---|
| 907 | + jmpl %l1 + %lo(sparc_vfork), %g0 |
|---|
| 908 | + add %sp, STACKFRAME_SZ, %o0 |
|---|
| 924 | 909 | |
|---|
| 925 | 910 | .align 4 |
|---|
| 926 | 911 | linux_sparc_ni_syscall: |
|---|