VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   33 Branches   57 Tags
0d1fb0a47c09b (Alex Dewar     2019-08-25 10:49:17 +0100  1) // SPDX-License-Identifier: GPL-2.0
ee56314b79039 (Jeff Dike      2008-02-04 22:30:43 -0800  2) /*
2eb5f31bc4ea2 (Anton Ivanov   2015-11-02 16:16:37 +0000  3)  * Copyright (C) 2015 Thomas Meyer (thomas@m3y3r.de)
ee56314b79039 (Jeff Dike      2008-02-04 22:30:43 -0800  4)  * Copyright (C) 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
ee56314b79039 (Jeff Dike      2008-02-04 22:30:43 -0800  5)  */
ee56314b79039 (Jeff Dike      2008-02-04 22:30:43 -0800  6) 
9786a8f3cbc61 (Bodo Stroesser 2005-07-07 17:56:50 -0700  7) #include <signal.h>
ee56314b79039 (Jeff Dike      2008-02-04 22:30:43 -0800  8) #include <sched.h>
9786a8f3cbc61 (Bodo Stroesser 2005-07-07 17:56:50 -0700  9) #include <asm/unistd.h>
ee56314b79039 (Jeff Dike      2008-02-04 22:30:43 -0800 10) #include <sys/time.h>
37185b3324087 (Al Viro        2012-10-08 03:27:32 +0100 11) #include <as-layout.h>
37185b3324087 (Al Viro        2012-10-08 03:27:32 +0100 12) #include <ptrace_user.h>
37185b3324087 (Al Viro        2012-10-08 03:27:32 +0100 13) #include <stub-data.h>
37185b3324087 (Al Viro        2012-10-08 03:27:32 +0100 14) #include <sysdep/stub.h>
9786a8f3cbc61 (Bodo Stroesser 2005-07-07 17:56:50 -0700 15) 
ee56314b79039 (Jeff Dike      2008-02-04 22:30:43 -0800 16) /*
ee56314b79039 (Jeff Dike      2008-02-04 22:30:43 -0800 17)  * This is in a separate file because it needs to be compiled with any
9786a8f3cbc61 (Bodo Stroesser 2005-07-07 17:56:50 -0700 18)  * extraneous gcc flags (-pg, -fprofile-arcs, -ftest-coverage) disabled
aa1a64ee12ae1 (Jeff Dike      2005-11-21 21:32:10 -0800 19)  *
aa1a64ee12ae1 (Jeff Dike      2005-11-21 21:32:10 -0800 20)  * Use UM_KERN_PAGE_SIZE instead of PAGE_SIZE because that calls getpagesize
aa1a64ee12ae1 (Jeff Dike      2005-11-21 21:32:10 -0800 21)  * on some systems.
9786a8f3cbc61 (Bodo Stroesser 2005-07-07 17:56:50 -0700 22)  */
39d730ab87f07 (Jeff Dike      2005-11-21 21:32:04 -0800 23) 
bf9a76a470d83 (Linus Torvalds 2020-10-26 15:39:37 -0700 24) void __attribute__ ((__section__ (".__syscall_stub")))
9786a8f3cbc61 (Bodo Stroesser 2005-07-07 17:56:50 -0700 25) stub_clone_handler(void)
9786a8f3cbc61 (Bodo Stroesser 2005-07-07 17:56:50 -0700 26) {
adf9ae0d159d3 (Johannes Berg  2021-07-13 23:47:10 +0200 27) 	struct stub_data *data = get_stub_page();
9786a8f3cbc61 (Bodo Stroesser 2005-07-07 17:56:50 -0700 28) 	long err;
9786a8f3cbc61 (Bodo Stroesser 2005-07-07 17:56:50 -0700 29) 
9786a8f3cbc61 (Bodo Stroesser 2005-07-07 17:56:50 -0700 30) 	err = stub_syscall2(__NR_clone, CLONE_PARENT | CLONE_FILES | SIGCHLD,
558f9b2f94dbd (YiFei Zhu      2021-04-20 00:56:10 -0500 31) 			    (unsigned long)data + UM_KERN_PAGE_SIZE / 2);
84b2789d61156 (Johannes Berg  2021-01-13 22:09:42 +0100 32) 	if (err) {
84b2789d61156 (Johannes Berg  2021-01-13 22:09:42 +0100 33) 		data->parent_err = err;
84b2789d61156 (Johannes Berg  2021-01-13 22:09:42 +0100 34) 		goto done;
84b2789d61156 (Johannes Berg  2021-01-13 22:09:42 +0100 35) 	}
9786a8f3cbc61 (Bodo Stroesser 2005-07-07 17:56:50 -0700 36) 
9786a8f3cbc61 (Bodo Stroesser 2005-07-07 17:56:50 -0700 37) 	err = stub_syscall4(__NR_ptrace, PTRACE_TRACEME, 0, 0, 0);
84b2789d61156 (Johannes Berg  2021-01-13 22:09:42 +0100 38) 	if (err) {
84b2789d61156 (Johannes Berg  2021-01-13 22:09:42 +0100 39) 		data->child_err = err;
84b2789d61156 (Johannes Berg  2021-01-13 22:09:42 +0100 40) 		goto done;
84b2789d61156 (Johannes Berg  2021-01-13 22:09:42 +0100 41) 	}
9786a8f3cbc61 (Bodo Stroesser 2005-07-07 17:56:50 -0700 42) 
9f0b4807a44ff (Johannes Berg  2021-01-13 22:09:43 +0100 43) 	remap_stack_and_trap();
5b7b15afee89d (Jeff Dike      2005-12-18 17:50:39 +0100 44) 
5b7b15afee89d (Jeff Dike      2005-12-18 17:50:39 +0100 45)  done:
9786a8f3cbc61 (Bodo Stroesser 2005-07-07 17:56:50 -0700 46) 	trap_myself();
9786a8f3cbc61 (Bodo Stroesser 2005-07-07 17:56:50 -0700 47) }