| @@ -1,14 +1,14 @@ | | | @@ -1,14 +1,14 @@ |
1 | /* $NetBSD: syscall.c,v 1.56 2020/07/06 09:34:18 rin Exp $ */ | | 1 | /* $NetBSD: syscall.c,v 1.57 2020/07/06 11:07:39 rin Exp $ */ |
2 | | | 2 | |
3 | /* | | 3 | /* |
4 | * Copyright (C) 2002 Matt Thomas | | 4 | * Copyright (C) 2002 Matt Thomas |
5 | * Copyright (C) 1995, 1996 Wolfgang Solfrank. | | 5 | * Copyright (C) 1995, 1996 Wolfgang Solfrank. |
6 | * Copyright (C) 1995, 1996 TooLs GmbH. | | 6 | * Copyright (C) 1995, 1996 TooLs GmbH. |
7 | * All rights reserved. | | 7 | * All rights reserved. |
8 | * | | 8 | * |
9 | * Redistribution and use in source and binary forms, with or without | | 9 | * Redistribution and use in source and binary forms, with or without |
10 | * modification, are permitted provided that the following conditions | | 10 | * modification, are permitted provided that the following conditions |
11 | * are met: | | 11 | * are met: |
12 | * 1. Redistributions of source code must retain the above copyright | | 12 | * 1. Redistributions of source code must retain the above copyright |
13 | * notice, this list of conditions and the following disclaimer. | | 13 | * notice, this list of conditions and the following disclaimer. |
14 | * 2. Redistributions in binary form must reproduce the above copyright | | 14 | * 2. Redistributions in binary form must reproduce the above copyright |
| @@ -25,56 +25,51 @@ | | | @@ -25,56 +25,51 @@ |
25 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | | 25 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
26 | * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | | 26 | * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
27 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | | 27 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
28 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; | | 28 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
29 | * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | | 29 | * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
30 | * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | | 30 | * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
31 | * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | | 31 | * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
32 | * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | 32 | * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
33 | */ | | 33 | */ |
34 | | | 34 | |
35 | /* DO NOT INCLUDE opt_compat_XXX.h */ | | 35 | /* DO NOT INCLUDE opt_compat_XXX.h */ |
36 | /* If needed, they will be included by file that includes this one */ | | 36 | /* If needed, they will be included by file that includes this one */ |
37 | | | 37 | |
38 | #ifdef _KERNEL_OPT | | | |
39 | #include "opt_altivec.h" | | | |
40 | #include "opt_multiprocessor.h" | | | |
41 | #endif | | | |
42 | | | | |
43 | #include <sys/param.h> | | 38 | #include <sys/param.h> |
44 | #include <sys/cpu.h> | | 39 | #include <sys/cpu.h> |
45 | #include <sys/ktrace.h> | | 40 | #include <sys/ktrace.h> |
46 | #include <sys/proc.h> | | 41 | #include <sys/proc.h> |
47 | #include <sys/reboot.h> | | 42 | #include <sys/reboot.h> |
48 | #include <sys/systm.h> | | 43 | #include <sys/systm.h> |
49 | #include <sys/syscallvar.h> | | 44 | #include <sys/syscallvar.h> |
50 | | | 45 | |
51 | #include <uvm/uvm_extern.h> | | 46 | #include <uvm/uvm_extern.h> |
52 | | | 47 | |
53 | #include <powerpc/frame.h> | | 48 | #include <powerpc/frame.h> |
54 | #include <powerpc/pcb.h> | | 49 | #include <powerpc/pcb.h> |
55 | #include <powerpc/userret.h> | | 50 | #include <powerpc/userret.h> |
56 | | | 51 | |
57 | #define FIRSTARG 3 /* first argument is in reg 3 */ | | 52 | #define FIRSTARG 3 /* first argument is in reg 3 */ |
58 | #define NARGREG 8 /* 8 args are in registers */ | | 53 | #define NARGREG 8 /* 8 args are in registers */ |
59 | #define MOREARGS(sp) ((void *)((uintptr_t)(sp) + 8)) /* more args go here */ | | 54 | #define MOREARGS(sp) ((void *)((uintptr_t)(sp) + 8)) /* more args go here */ |
60 | | | 55 | |
61 | #ifndef EMULNAME | | 56 | #ifndef EMULNAME |
62 | #include <sys/syscall.h> | | 57 | #include <sys/syscall.h> |
63 | | | 58 | |
64 | #define EMULNAME(x) (x) | | 59 | #define EMULNAME(x) (x) |
65 | #define EMULNAMEU(x) (x) | | 60 | #define EMULNAMEU(x) (x) |
66 | | | 61 | |
67 | __KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.56 2020/07/06 09:34:18 rin Exp $"); | | 62 | __KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.57 2020/07/06 11:07:39 rin Exp $"); |
68 | | | 63 | |
69 | void | | 64 | void |
70 | md_child_return(struct lwp *l) | | 65 | md_child_return(struct lwp *l) |
71 | { | | 66 | { |
72 | struct trapframe * const tf = l->l_md.md_utf; | | 67 | struct trapframe * const tf = l->l_md.md_utf; |
73 | | | 68 | |
74 | tf->tf_fixreg[FIRSTARG] = 0; | | 69 | tf->tf_fixreg[FIRSTARG] = 0; |
75 | tf->tf_fixreg[FIRSTARG + 1] = 1; | | 70 | tf->tf_fixreg[FIRSTARG + 1] = 1; |
76 | tf->tf_cr &= ~0x10000000; | | 71 | tf->tf_cr &= ~0x10000000; |
77 | tf->tf_srr1 &= ~(PSL_FP|PSL_VEC); /* Disable FP & AltiVec, as we can't | | 72 | tf->tf_srr1 &= ~(PSL_FP|PSL_VEC); /* Disable FP & AltiVec, as we can't |
78 | be them. */ | | 73 | be them. */ |
79 | } | | 74 | } |
80 | #endif | | 75 | #endif |