⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mk_syscalls

📁 Newlib 嵌入式 C库 标准实现代码
💻
字号:
#!/usr/bin/perl -w##  (C) Copyright 2007 TOSHIBA CORPORATION#  All Rights Reserved##  Redistribution and use in source and binary forms, with or without#  modification, are permitted provided that the following conditions are met:##    * Redistributions of source code must retain the above copyright notice,#  this list of conditions and the following disclaimer.#    * Redistributions in binary form must reproduce the above copyright#  notice, this list of conditions and the following disclaimer in the#  documentation and/or other materials provided with the distribution.#    * Neither the names of Toshiba nor the names of its#  contributors may be used to endorse or promote products derived from this#  software without specific prior written permission.##  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE#  POSSIBILITY OF SUCH DAMAGE.open(DEFS, "syscall.def");while ($line = <DEFS>) {	next if ($line =~ /^#.*/);		($opcode, $name, $fp, $parms) = split(" ", $line);	$filename = ">" . $name . ".S";	open(SOURCE, $filename);	print SOURCE "\/\*\n";	print SOURCE "  Copyright (c) 2007, Toshiba Corporation\n\n";	print SOURCE "  All rights reserved.\n\n";	print SOURCE "  Redistribution and use in source and binary forms, with or without\n";	print SOURCE "  modification, are permitted provided that the following conditions are met:\n\n";	print SOURCE "    \* Redistributions of source code must retain the above copyright notice,\n";	print SOURCE "  this list of conditions and the following disclaimer.\n";	print SOURCE "    \* Redistributions in binary form must reproduce the above copyright\n";	print SOURCE "  notice, this list of conditions and the following disclaimer in the\n";	print SOURCE "  documentation and/or other materials provided with the distribution.\n";	print SOURCE "    \* Neither the names of Toshiba nor the names of its\n";	print SOURCE "  contributors may be used to endorse or promote products derived from this\n";	print SOURCE "  software without specific prior written permission.\n\n";	print SOURCE "  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n";	print SOURCE "  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n";	print SOURCE "  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n";	print SOURCE "  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n";	print SOURCE "  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n";	print SOURCE "  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n";	print SOURCE "  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n";	print SOURCE "  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n";	print SOURCE "  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n";	print SOURCE "  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n";	print SOURCE "  POSSIBILITY OF SUCH DAMAGE.\n";	print SOURCE " \*\/\n\n";	print SOURCE "#include \"c99ppe.h\"\n\n";	print SOURCE "	.text\n";	print SOURCE "	.align	4\n";	print SOURCE "	GLOBL	", $name, "\n";	print SOURCE $name, ":\n";	print SOURCE "	stqd	\$0, 16(\$sp)		\/\* save caller address \*\/\n";	print SOURCE "	il	\$2, ", $parms, "			\/\* number of fixed arguments \*\/\n";	print SOURCE "	brsl	\$0, __stack_reg_va	\/\* save register to the stack frame \*\/\n\n";	if ($fp > 0) {		print SOURCE "	brsl	\$0, __check_init\n";		print SOURCE "	lqd	\$3, 16\*2(\$sp)		\/\* \$3 <- saved FP on the stack frame \*\/\n";		print SOURCE "	lqd	\$2, 0(\$3)		\/\* FP = fp->_fp \*\/\n";		print SOURCE "	rotqby	\$2, \$2, \$3\n";		print SOURCE "	stqd	\$2, 16\*2(\$sp)		\/\* replace FP on the stack frame \*\/\n\n";	}	print SOURCE "	il	\$3, SPE_C99_SIGNALCODE\n";	print SOURCE "	il	\$4, ", $opcode, "\n";	print SOURCE "	ai	\$5, \$sp, 16\*2		\/\* data (\$3 save address) \*\/\n";	print SOURCE "	brsl	\$0, __send_to_ppe\n\n";	print SOURCE "	il	\$2, 16\*(SPE_STACK_REGS+2+2)\n";	print SOURCE "	a	\$sp, \$sp, \$2\n";	print SOURCE "	lqd	\$0, 16(\$sp)		\/\* load caller address \*\/\n";	print SOURCE "	bi      \$0			\/\* return to caller \*\/\n";	close(SOURCE);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -