.. | .. |
---|
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: |
---|