riscv64: Cater for M2-Planet.
* kaem.riscv64: New file. * lib/linux/riscv64-mes-m2/crt1.M1, lib/m2/riscv64/ELF-riscv64.hex2, lib/m2/riscv64/riscv64_defs.M1: New files, imported from M2Lib.c * lib/linux/riscv64-mes-m2/_exit.c, lib/linux/riscv64-mes-m2/_write.c, lib/linux/riscv64-mes-m2/crt1.c, lib/linux/riscv64-mes-m2/syscall.c: New files, adapted for M2-Planet calling convention from ... * lib/linux/riscv64-mes-mescc: ...here * kaem.run: Move fcntl.h up. Include signal.h. * build-aux/build.sh.in: Also allow kaem build for riscv64.
This commit is contained in:
parent
c6d0604e0c
commit
141688a865
|
@ -103,7 +103,9 @@ fi
|
||||||
|
|
||||||
if test -n "$M2_PLANET" && (test "$mes_cpu" == "x86" \
|
if test -n "$M2_PLANET" && (test "$mes_cpu" == "x86" \
|
||||||
|| test "$mes_cpu" == "x86_64" \
|
|| test "$mes_cpu" == "x86_64" \
|
||||||
|| test "$mes_cpu" == "arm" ); then
|
|| test "$mes_cpu" == "arm" \
|
||||||
|
|| test "$mes_cpu" == "riscv64" \
|
||||||
|
); then
|
||||||
(
|
(
|
||||||
. ${srcdest}build-aux/trace.sh
|
. ${srcdest}build-aux/trace.sh
|
||||||
if [ -z "$V" -o "$V" = 0 ]; then
|
if [ -z "$V" -o "$V" = 0 ]; then
|
||||||
|
|
|
@ -29,6 +29,10 @@ case "$mes_cpu" in
|
||||||
cc_cpu=i386
|
cc_cpu=i386
|
||||||
stage0_cpu=x86
|
stage0_cpu=x86
|
||||||
;;
|
;;
|
||||||
|
riscv64)
|
||||||
|
cc_cpu=riscv64
|
||||||
|
stage0_cpu=riscv64
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
stage0_cpu=$mes_cpu
|
stage0_cpu=$mes_cpu
|
||||||
cc_cpu=$mes_cpu
|
cc_cpu=$mes_cpu
|
||||||
|
|
26
kaem.riscv64
Normal file
26
kaem.riscv64
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# Copyright © 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
#
|
||||||
|
# This file is part of GNU Mes.
|
||||||
|
#
|
||||||
|
# GNU Mes is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 3 of the License, or (at
|
||||||
|
# your option) any later version.
|
||||||
|
#
|
||||||
|
# GNU Mes is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# Usage:
|
||||||
|
# kaem --verbose --strict
|
||||||
|
|
||||||
|
cc_cpu=riscv64
|
||||||
|
mes_cpu=riscv64
|
||||||
|
stage0_cpu=riscv64
|
||||||
|
blood_elf_flag=--64
|
||||||
|
kaem --verbose --strict
|
4
kaem.run
4
kaem.run
|
@ -36,6 +36,7 @@ M2-Planet \
|
||||||
-f include/mes/lib-mini.h \
|
-f include/mes/lib-mini.h \
|
||||||
-f include/mes/lib.h \
|
-f include/mes/lib.h \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/crt1.c \
|
-f lib/linux/${mes_cpu}-mes-m2/crt1.c \
|
||||||
|
-f lib/mes/__init_io.c \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/_exit.c \
|
-f lib/linux/${mes_cpu}-mes-m2/_exit.c \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/_write.c \
|
-f lib/linux/${mes_cpu}-mes-m2/_write.c \
|
||||||
-f lib/mes/globals.c \
|
-f lib/mes/globals.c \
|
||||||
|
@ -53,6 +54,7 @@ M2-Planet \
|
||||||
-f lib/stdio/getchar.c \
|
-f lib/stdio/getchar.c \
|
||||||
-f lib/stdio/putchar.c \
|
-f lib/stdio/putchar.c \
|
||||||
-f lib/stub/__buffered_read.c \
|
-f lib/stub/__buffered_read.c \
|
||||||
|
-f include/fcntl.h \
|
||||||
-f lib/linux/_open3.c \
|
-f lib/linux/_open3.c \
|
||||||
-f lib/linux/open.c \
|
-f lib/linux/open.c \
|
||||||
-f lib/mes/mes_open.c \
|
-f lib/mes/mes_open.c \
|
||||||
|
@ -99,6 +101,7 @@ M2-Planet \
|
||||||
-f lib/linux/ioctl3.c \
|
-f lib/linux/ioctl3.c \
|
||||||
-f include/sys/ioctl.h \
|
-f include/sys/ioctl.h \
|
||||||
-f lib/m2/isatty.c \
|
-f lib/m2/isatty.c \
|
||||||
|
-f include/signal.h \
|
||||||
-f lib/linux/fork.c \
|
-f lib/linux/fork.c \
|
||||||
-f lib/m2/execve.c \
|
-f lib/m2/execve.c \
|
||||||
-f lib/m2/execv.c \
|
-f lib/m2/execv.c \
|
||||||
|
@ -120,7 +123,6 @@ M2-Planet \
|
||||||
-f src/core.c \
|
-f src/core.c \
|
||||||
-f src/display.c \
|
-f src/display.c \
|
||||||
-f src/eval-apply.c \
|
-f src/eval-apply.c \
|
||||||
-f include/fcntl.h \
|
|
||||||
-f src/gc.c \
|
-f src/gc.c \
|
||||||
-f src/hash.c \
|
-f src/hash.c \
|
||||||
-f src/lib.c \
|
-f src/lib.c \
|
||||||
|
|
|
@ -28,7 +28,13 @@
|
||||||
int
|
int
|
||||||
open (char *file_name, int flags, int mask)
|
open (char *file_name, int flags, int mask)
|
||||||
{
|
{
|
||||||
|
#if defined (SYS_open)
|
||||||
int r = _sys_call3 (SYS_open, file_name, flags, mask);
|
int r = _sys_call3 (SYS_open, file_name, flags, mask);
|
||||||
|
#elif defined (SYS_openat)
|
||||||
|
int r = _sys_call4 (SYS_openat, AT_FDCWD, file_name, flags, mask);
|
||||||
|
#else
|
||||||
|
#error No usable open syscall
|
||||||
|
#endif
|
||||||
if (r > 2)
|
if (r > 2)
|
||||||
__ungetc_clear (r);
|
__ungetc_clear (r);
|
||||||
return r;
|
return r;
|
||||||
|
|
31
lib/linux/riscv64-mes-m2/_exit.c
Normal file
31
lib/linux/riscv64-mes-m2/_exit.c
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2018,2020,2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
* Copyright © 2021 W. J. van der Laan <laanwj@protonmail.com>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU Mes is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or (at
|
||||||
|
* your option) any later version.
|
||||||
|
*
|
||||||
|
* GNU Mes is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "mes/lib-mini.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
_exit (int status)
|
||||||
|
{
|
||||||
|
asm ("ld_____%a0,-0x08(%fp)");
|
||||||
|
asm ("li_____%a7,SYS_exit");
|
||||||
|
asm ("ecall");
|
||||||
|
// no need to read return value
|
||||||
|
}
|
33
lib/linux/riscv64-mes-m2/_write.c
Normal file
33
lib/linux/riscv64-mes-m2/_write.c
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2018,2020,2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
* Copyright © 2021 W. J. van der Laan <laanwj@protonmail.com>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU Mes is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or (at
|
||||||
|
* your option) any later version.
|
||||||
|
*
|
||||||
|
* GNU Mes is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "mes/lib-mini.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
_write (int filedes, void const *buffer, size_t size)
|
||||||
|
{
|
||||||
|
asm ("ld_____%a0,-0x08(%fp)");
|
||||||
|
asm ("ld_____%a1,-0x10(%fp)");
|
||||||
|
asm ("ld_____%a2,-0x18(%fp)");
|
||||||
|
asm ("li_____%a7,SYS_write");
|
||||||
|
asm ("ecall");
|
||||||
|
asm ("mv_____%t0,%a0");
|
||||||
|
}
|
74
lib/linux/riscv64-mes-m2/crt1.M1
Normal file
74
lib/linux/riscv64-mes-m2/crt1.M1
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
## Copyright (C) 2021 Andrius Štikonas
|
||||||
|
## Copyright (C) 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
##
|
||||||
|
## This file is part of stage0.
|
||||||
|
##
|
||||||
|
## stage0 is free software: you can redistribute it and/or modify
|
||||||
|
## it under the terms of the GNU General Public License as published by
|
||||||
|
## the Free Software Foundation, either version 3 of the License, or
|
||||||
|
## (at your option) any later version.
|
||||||
|
##
|
||||||
|
## stage0 is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
## GNU General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU General Public License
|
||||||
|
## along with stage0. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
:_start
|
||||||
|
RD_FP RS1_SP MV ; Protect stack pointer
|
||||||
|
|
||||||
|
; Prepare argv
|
||||||
|
RD_A0 RS1_FP !8 ADDI ; ARGV_address = FP + 8
|
||||||
|
RD_SP RS1_SP !-8 ADDI
|
||||||
|
RS1_SP RS2_A0 SD ; Put argv on the stack
|
||||||
|
|
||||||
|
; Prepare envp
|
||||||
|
RD_A0 RS1_FP MV ; Address we need to load from
|
||||||
|
RD_A0 RS1_A0 LD ; Get ARGC
|
||||||
|
RD_A0 RS1_A0 !2 ADDI ; OFFSET = ARGC + 2
|
||||||
|
RD_A0 RS1_A0 RS2_X3 SLLI ; OFFSET = OFFSET * WORDSIZE
|
||||||
|
RD_A0 RS1_FP RS2_A0 ADD ; ENVP_address = RSP + OFFSET
|
||||||
|
RD_SP RS1_SP !-8 ADDI
|
||||||
|
RS1_SP RS2_A0 SD ; Put envp on the stack
|
||||||
|
|
||||||
|
# AAARG, this also does not work!?
|
||||||
|
# pop____%t0 ; envp
|
||||||
|
# push___%t0
|
||||||
|
# li_____%t0,$i32 &GLOBAL_environ
|
||||||
|
|
||||||
|
# li_____%t0,$i16_0000 @0
|
||||||
|
# XXX avoid Illegal instruction
|
||||||
|
# li_____%t1,$i32 &GLOBAL___stdin
|
||||||
|
# sw_____%t0,0(%t1)
|
||||||
|
|
||||||
|
# li_____%t0,$i16_0000 @1
|
||||||
|
# srai___%t0,16
|
||||||
|
# li_____%t1,$i32 &GLOBAL___stdout
|
||||||
|
# sw_____%t0,0(%t1)
|
||||||
|
|
||||||
|
# li_____%t0,$i16_0000 @2
|
||||||
|
# XXX avoid Segmentation fault
|
||||||
|
# srai___%t0,16
|
||||||
|
# li_____%t1,$i32 &GLOBAL___stderr
|
||||||
|
# sw_____%t0,0(%t1)
|
||||||
|
|
||||||
|
; Stack offset
|
||||||
|
RD_FP RS1_FP !8 ADDI
|
||||||
|
|
||||||
|
; Init libc
|
||||||
|
RD_RA $FUNCTION___init_io JAL
|
||||||
|
|
||||||
|
; Call main function
|
||||||
|
RD_RA $FUNCTION_main JAL
|
||||||
|
|
||||||
|
; Put return value on the stack so that _exit gets it
|
||||||
|
RD_SP RS1_SP !-16 ADDI
|
||||||
|
RS1_SP RS2_A0 SD
|
||||||
|
|
||||||
|
; Exit to kernel
|
||||||
|
|
||||||
|
RD_A0 RS1_SP LD
|
||||||
|
RD_A7 !93 ADDI ; Syscall for exit
|
||||||
|
ECALL ; Exit with code in a0
|
34
lib/linux/riscv64-mes-m2/crt1.c
Normal file
34
lib/linux/riscv64-mes-m2/crt1.c
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2018,2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU Mes is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or (at
|
||||||
|
* your option) any later version.
|
||||||
|
*
|
||||||
|
* GNU Mes is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "mes/lib-mini.h"
|
||||||
|
|
||||||
|
int __stdin;
|
||||||
|
int __stdout;
|
||||||
|
int __stderr;
|
||||||
|
char **environ;
|
||||||
|
int main (int argc, char **argv, char **envp);
|
||||||
|
|
||||||
|
/* FIXME: this is going to be called `FUNCTION__start' */
|
||||||
|
//#int
|
||||||
|
//#_start ()
|
||||||
|
//#{
|
||||||
|
//# ..
|
||||||
|
//#}
|
182
lib/linux/riscv64-mes-m2/syscall.c
Normal file
182
lib/linux/riscv64-mes-m2/syscall.c
Normal file
|
@ -0,0 +1,182 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2016,2017,2018,2020,2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
* Copyright © 2021 W. J. van der Laan <laanwj@protonmail.com>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU Mes is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or (at
|
||||||
|
* your option) any later version.
|
||||||
|
*
|
||||||
|
* GNU Mes is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <linux/riscv64/syscall.h>
|
||||||
|
|
||||||
|
long
|
||||||
|
__sys_call (long sys_call)
|
||||||
|
{
|
||||||
|
asm ("ld_____%a7,-0x08(%fp)");
|
||||||
|
|
||||||
|
asm ("ecall");
|
||||||
|
|
||||||
|
asm ("mv_____%t0,%a0");
|
||||||
|
}
|
||||||
|
|
||||||
|
long
|
||||||
|
__sys_call1 (long sys_call, long one)
|
||||||
|
{
|
||||||
|
asm ("ld_____%a7,-0x08(%fp)");
|
||||||
|
asm ("ld_____%a0,-0x10(%fp)");
|
||||||
|
|
||||||
|
asm ("ecall");
|
||||||
|
|
||||||
|
asm ("mv_____%t0,%a0");
|
||||||
|
}
|
||||||
|
|
||||||
|
long
|
||||||
|
__sys_call2 (long sys_call, long one, long two)
|
||||||
|
{
|
||||||
|
asm ("ld_____%a7,-0x08(%fp)");
|
||||||
|
asm ("ld_____%a0,-0x10(%fp)");
|
||||||
|
asm ("ld_____%a1,-0x18(%fp)");
|
||||||
|
|
||||||
|
asm ("ecall");
|
||||||
|
|
||||||
|
asm ("mv_____%t0,%a0");
|
||||||
|
}
|
||||||
|
|
||||||
|
long
|
||||||
|
__sys_call3 (long sys_call, long one, long two, long three)
|
||||||
|
{
|
||||||
|
asm ("ld_____%a7,-0x08(%fp)");
|
||||||
|
asm ("ld_____%a0,-0x10(%fp)");
|
||||||
|
asm ("ld_____%a1,-0x18(%fp)");
|
||||||
|
asm ("ld_____%a2,-0x20(%fp)");
|
||||||
|
|
||||||
|
asm ("ecall");
|
||||||
|
|
||||||
|
asm ("mv_____%t0,%a0");
|
||||||
|
}
|
||||||
|
|
||||||
|
long
|
||||||
|
__sys_call4 (long sys_call, long one, long two, long three, long four)
|
||||||
|
{
|
||||||
|
asm ("ld_____%a7,-0x08(%fp)");
|
||||||
|
asm ("ld_____%a0,-0x10(%fp)");
|
||||||
|
asm ("ld_____%a1,-0x18(%fp)");
|
||||||
|
asm ("ld_____%a2,-0x20(%fp)");
|
||||||
|
asm ("ld_____%a3,-0x28(%fp)");
|
||||||
|
|
||||||
|
asm ("ecall");
|
||||||
|
|
||||||
|
asm ("mv_____%t0,%a0");
|
||||||
|
}
|
||||||
|
|
||||||
|
long
|
||||||
|
__sys_call5 (long sys_call, long one, long two, long three, long four, long five)
|
||||||
|
{
|
||||||
|
asm ("ld_____%a7,-0x08(%fp)");
|
||||||
|
asm ("ld_____%a0,-0x10(%fp)");
|
||||||
|
asm ("ld_____%a1,-0x18(%fp)");
|
||||||
|
asm ("ld_____%a2,-0x20(%fp)");
|
||||||
|
asm ("ld_____%a3,-0x28(%fp)");
|
||||||
|
asm ("ld_____%a4,-0x30(%fp)");
|
||||||
|
|
||||||
|
asm ("ecall");
|
||||||
|
|
||||||
|
asm ("mv_____%t0,%a0");
|
||||||
|
}
|
||||||
|
|
||||||
|
long
|
||||||
|
_sys_call (long sys_call)
|
||||||
|
{
|
||||||
|
long r = __sys_call (sys_call);
|
||||||
|
if (r < 0)
|
||||||
|
{
|
||||||
|
errno = -r;
|
||||||
|
r = -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
errno = 0;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
long
|
||||||
|
_sys_call1 (long sys_call, long one)
|
||||||
|
{
|
||||||
|
long r = __sys_call1 (sys_call, one);
|
||||||
|
if (r < 0)
|
||||||
|
{
|
||||||
|
errno = -r;
|
||||||
|
r = -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
errno = 0;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
long
|
||||||
|
_sys_call2 (long sys_call, long one, long two)
|
||||||
|
{
|
||||||
|
long r = __sys_call2 (sys_call, one, two);
|
||||||
|
if (r < 0)
|
||||||
|
{
|
||||||
|
errno = -r;
|
||||||
|
r = -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
errno = 0;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
long
|
||||||
|
_sys_call3 (long sys_call, long one, long two, long three)
|
||||||
|
{
|
||||||
|
long r = __sys_call3 (sys_call, one, two, three);
|
||||||
|
if (r < 0)
|
||||||
|
{
|
||||||
|
errno = -r;
|
||||||
|
r = -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
errno = 0;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
long
|
||||||
|
_sys_call4 (long sys_call, long one, long two, long three, long four)
|
||||||
|
{
|
||||||
|
long r = __sys_call4 (sys_call, one, two, three, four);
|
||||||
|
if (r < 0)
|
||||||
|
{
|
||||||
|
errno = -r;
|
||||||
|
r = -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
errno = 0;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
long
|
||||||
|
_sys_call5 (long sys_call, long one, long two, long three, long four, long five)
|
||||||
|
{
|
||||||
|
long r = __sys_call5 (sys_call, one, two, three, four, five);
|
||||||
|
if (r < 0)
|
||||||
|
{
|
||||||
|
errno = -r;
|
||||||
|
r = -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
errno = 0;
|
||||||
|
return r;
|
||||||
|
}
|
69
lib/m2/riscv64/ELF-riscv64.hex2
Normal file
69
lib/m2/riscv64/ELF-riscv64.hex2
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
### Copyright (C) 2016 Jeremiah Orians
|
||||||
|
### Copyright (C) 2017 Jan Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
### This file is part of M2-Planet.
|
||||||
|
###
|
||||||
|
### M2-Planet is free software: you can redistribute it and/or modify
|
||||||
|
### it under the terms of the GNU General Public License as published by
|
||||||
|
### the Free Software Foundation, either version 3 of the License, or
|
||||||
|
### (at your option) any later version.
|
||||||
|
###
|
||||||
|
### M2-Planet is distributed in the hope that it will be useful,
|
||||||
|
### but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
### GNU General Public License for more details.
|
||||||
|
###
|
||||||
|
### You should have received a copy of the GNU General Public License
|
||||||
|
### along with M2-Planet. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
### 64 bit elf header in hex2
|
||||||
|
### if you wish to use this header, you need to add :ELF_end to the end of your
|
||||||
|
### M1 or hex2 files.
|
||||||
|
|
||||||
|
## ELF Header
|
||||||
|
|
||||||
|
:ELF_base
|
||||||
|
7F 45 4C 46 ## e_ident[EI_MAG0-3] ELF's magic number
|
||||||
|
|
||||||
|
02 ## e_ident[EI_CLASS] Indicating 64 bit
|
||||||
|
01 ## e_ident[EI_DATA] Indicating little endianness
|
||||||
|
01 ## e_ident[EI_VERSION] Indicating original elf
|
||||||
|
|
||||||
|
03 ## e_ident[EI_OSABI] Set at 3 because FreeBSD is strict
|
||||||
|
00 ## e_ident[EI_ABIVERSION] Set at 0 because none cares
|
||||||
|
|
||||||
|
00 00 00 00 00 00 00 ## e_ident[EI_PAD]
|
||||||
|
02 00 ## e_type Indicating Executable
|
||||||
|
F3 00 ## e_machine Indicating RISC-V
|
||||||
|
01 00 00 00 ## e_version Indicating original elf
|
||||||
|
|
||||||
|
&_start 00 00 00 00 ## e_entry Address of the entry point (Number of bytes this header is + Base Address)
|
||||||
|
%ELF_program_headers>ELF_base 00 00 00 00 ## e_phoff Address of program header table
|
||||||
|
%ELF_section_headers>ELF_base 00 00 00 00 ## e_shoff Address of section header table
|
||||||
|
|
||||||
|
00 00 00 00 ## e_flags
|
||||||
|
40 00 ## e_ehsize Indicating our 64 Byte header
|
||||||
|
|
||||||
|
38 00 ## e_phentsize size of a program header table
|
||||||
|
01 00 ## e_phnum number of entries in program table
|
||||||
|
|
||||||
|
40 00 ## e_shentsize size of a section header table
|
||||||
|
05 00 ## e_shnum number of entries in section table
|
||||||
|
|
||||||
|
02 00 ## e_shstrndx index of the section names
|
||||||
|
|
||||||
|
## Program Header
|
||||||
|
:ELF_program_headers
|
||||||
|
:ELF_program_header__text
|
||||||
|
01 00 00 00 ## p_type
|
||||||
|
07 00 00 00 ## ph_flags: PF-X|PF-W|PF-R = 7
|
||||||
|
00 00 00 00 00 00 00 00 ## p_offset
|
||||||
|
|
||||||
|
&ELF_base 00 00 00 00 ## p_vaddr
|
||||||
|
&ELF_base 00 00 00 00 ## p_physaddr
|
||||||
|
|
||||||
|
%ELF_end>ELF_base 00 00 00 00 ## p_filesz
|
||||||
|
%ELF_end>ELF_base 00 00 00 00 ## p_memsz
|
||||||
|
|
||||||
|
01 00 00 00 00 00 00 00 ## Required alignment
|
||||||
|
|
||||||
|
:ELF_text
|
237
lib/m2/riscv64/riscv64_defs.M1
Normal file
237
lib/m2/riscv64/riscv64_defs.M1
Normal file
|
@ -0,0 +1,237 @@
|
||||||
|
## Copyright (C) 2021 Andrius Štikonas
|
||||||
|
## This file is part of M2-Planet.
|
||||||
|
##
|
||||||
|
## M2-Planet is free software: you can redistribute it and/or modify
|
||||||
|
## it under the terms of the GNU General Public License as published by
|
||||||
|
## the Free Software Foundation, either version 3 of the License, or
|
||||||
|
## (at your option) any later version.
|
||||||
|
##
|
||||||
|
## M2-Planet is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
## GNU General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU General Public License
|
||||||
|
## along with M2-Planet. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
DEFINE NULL 0000000000000000
|
||||||
|
|
||||||
|
;; Opcodes
|
||||||
|
|
||||||
|
;; RV32I Base Instruction Set
|
||||||
|
DEFINE LUI 37000000
|
||||||
|
DEFINE AUIPC 17000000
|
||||||
|
DEFINE JAL 6F000000
|
||||||
|
DEFINE JALR 67000000
|
||||||
|
DEFINE BEQ 63000000
|
||||||
|
DEFINE BNE 63100000
|
||||||
|
DEFINE BLT 63400000
|
||||||
|
DEFINE BGE 63500000
|
||||||
|
DEFINE BLTU 63600000
|
||||||
|
DEFINE BGEU 63700000
|
||||||
|
DEFINE LB 03000000
|
||||||
|
DEFINE LH 03100000
|
||||||
|
DEFINE LW 03200000
|
||||||
|
DEFINE LBU 03400000
|
||||||
|
DEFINE LHU 03500000
|
||||||
|
DEFINE SB 23000000
|
||||||
|
DEFINE SH 23100000
|
||||||
|
DEFINE SW 23200000
|
||||||
|
DEFINE ADDI 13000000
|
||||||
|
DEFINE SLTI 13200000
|
||||||
|
DEFINE SLTIU 13300000
|
||||||
|
DEFINE XORI 13400000
|
||||||
|
DEFINE ORI 13600000
|
||||||
|
DEFINE ANDI 13700000
|
||||||
|
DEFINE SLLI 13100000
|
||||||
|
DEFINE SRLI 13500000
|
||||||
|
DEFINE SRAI 13500040
|
||||||
|
DEFINE ADD 33000000
|
||||||
|
DEFINE SUB 33000040
|
||||||
|
DEFINE SLL 33100000
|
||||||
|
DEFINE SLT 33200000
|
||||||
|
DEFINE SLTU 33300000
|
||||||
|
DEFINE XOR 33400000
|
||||||
|
DEFINE SRL 33500000
|
||||||
|
DEFINE SRA 33500040
|
||||||
|
DEFINE OR 33600000
|
||||||
|
DEFINE AND 33700000
|
||||||
|
DEFINE ECALL 73000000
|
||||||
|
|
||||||
|
;; RV64I Base Instruction set
|
||||||
|
DEFINE LWU 03600000
|
||||||
|
DEFINE LD 03300000
|
||||||
|
DEFINE SD 23300000
|
||||||
|
DEFINE ADDIW 1B000000
|
||||||
|
DEFINE SLLIW 1B100000
|
||||||
|
DEFINE SRLIW 1B500000
|
||||||
|
DEFINE SRAIW 1B500040
|
||||||
|
DEFINE ADDW 3B000000
|
||||||
|
DEFINE SUBW 3B000040
|
||||||
|
DEFINE SLLW 3B100000
|
||||||
|
DEFINE SRLW 3B500000
|
||||||
|
DEFINE SRAW 3B500040
|
||||||
|
|
||||||
|
;; RV32M Standard Extensions
|
||||||
|
DEFINE MUL 33000002
|
||||||
|
DEFINE MULH 33100002
|
||||||
|
DEFINE MULHSU 33200002
|
||||||
|
DEFINE MULHU 33300002
|
||||||
|
DEFINE DIV 33400002
|
||||||
|
DEFINE DIVU 33500002
|
||||||
|
DEFINE REM 33600002
|
||||||
|
DEFINE REMU 33700002
|
||||||
|
|
||||||
|
;; RV64M Standard Extensions
|
||||||
|
DEFINE MULW 3B000002
|
||||||
|
DEFINE DIVW 3B400002
|
||||||
|
DEFINE DIVUW 3B500002
|
||||||
|
DEFINE REMW 3B600002
|
||||||
|
DEFINE REMUW 3B700002
|
||||||
|
|
||||||
|
;; Pseudoinstructions
|
||||||
|
DEFINE NOP 13000000 # ADDI
|
||||||
|
DEFINE MV 13000000 # ADDI
|
||||||
|
DEFINE NOT 1340F0FF # XORI, RD, RS, -1
|
||||||
|
DEFINE BEQZ 63000000 # BEQ
|
||||||
|
DEFINE BNEZ 63100000 # BNE
|
||||||
|
DEFINE BLTZ 63400000 # BLT
|
||||||
|
DEFINE RETURN 67800000 # RS1_RA JALR
|
||||||
|
|
||||||
|
;; Destination registers
|
||||||
|
;; register_number << 7
|
||||||
|
DEFINE RD_RA .80000000
|
||||||
|
DEFINE RD_SP .00010000
|
||||||
|
DEFINE RD_GP .80010000
|
||||||
|
DEFINE RD_TP .00020000
|
||||||
|
DEFINE RD_T0 .80020000
|
||||||
|
DEFINE RD_T1 .00030000
|
||||||
|
DEFINE RD_T2 .80030000
|
||||||
|
DEFINE RD_S0 .00040000
|
||||||
|
DEFINE RD_FP .00040000
|
||||||
|
DEFINE RD_S1 .80040000
|
||||||
|
DEFINE RD_A0 .00050000
|
||||||
|
DEFINE RD_A1 .80050000
|
||||||
|
DEFINE RD_A2 .00060000
|
||||||
|
DEFINE RD_A3 .80060000
|
||||||
|
DEFINE RD_A4 .00070000
|
||||||
|
DEFINE RD_A5 .80070000
|
||||||
|
DEFINE RD_A6 .00080000
|
||||||
|
DEFINE RD_A7 .80080000
|
||||||
|
DEFINE RD_S2 .00090000
|
||||||
|
DEFINE RD_S3 .80090000
|
||||||
|
DEFINE RD_S4 .000A0000
|
||||||
|
DEFINE RD_S5 .800A0000
|
||||||
|
DEFINE RD_S6 .000B0000
|
||||||
|
DEFINE RD_S7 .800B0000
|
||||||
|
DEFINE RD_S8 .000C0000
|
||||||
|
DEFINE RD_S9 .800C0000
|
||||||
|
DEFINE RD_S10 .000D0000
|
||||||
|
DEFINE RD_S11 .800D0000
|
||||||
|
DEFINE RD_T3 .000E0000
|
||||||
|
DEFINE RD_T4 .800E0000
|
||||||
|
DEFINE RD_T5 .000F0000
|
||||||
|
DEFINE RD_T6 .800F0000
|
||||||
|
|
||||||
|
;; First source registers
|
||||||
|
;; register_number << 15
|
||||||
|
DEFINE RS1_RA .00800000
|
||||||
|
DEFINE RS1_SP .00000100
|
||||||
|
DEFINE RS1_GP .00800100
|
||||||
|
DEFINE RS1_TP .00000200
|
||||||
|
DEFINE RS1_T0 .00800200
|
||||||
|
DEFINE RS1_T1 .00000300
|
||||||
|
DEFINE RS1_T2 .00800300
|
||||||
|
DEFINE RS1_S0 .00000400
|
||||||
|
DEFINE RS1_FP .00000400
|
||||||
|
DEFINE RS1_S1 .00800400
|
||||||
|
DEFINE RS1_A0 .00000500
|
||||||
|
DEFINE RS1_A1 .00800500
|
||||||
|
DEFINE RS1_A2 .00000600
|
||||||
|
DEFINE RS1_A3 .00800600
|
||||||
|
DEFINE RS1_A4 .00000700
|
||||||
|
DEFINE RS1_A5 .00800700
|
||||||
|
DEFINE RS1_A6 .00000800
|
||||||
|
DEFINE RS1_A7 .00800800
|
||||||
|
DEFINE RS1_S2 .00000900
|
||||||
|
DEFINE RS1_S3 .00800900
|
||||||
|
DEFINE RS1_S4 .00000A00
|
||||||
|
DEFINE RS1_S5 .00800A00
|
||||||
|
DEFINE RS1_S6 .00000B00
|
||||||
|
DEFINE RS1_S7 .00800B00
|
||||||
|
DEFINE RS1_S8 .00000C00
|
||||||
|
DEFINE RS1_S9 .00800C00
|
||||||
|
DEFINE RS1_S10 .00000D00
|
||||||
|
DEFINE RS1_S11 .00800D00
|
||||||
|
DEFINE RS1_T3 .00000E00
|
||||||
|
DEFINE RS1_T4 .00800E00
|
||||||
|
DEFINE RS1_T5 .00000F00
|
||||||
|
DEFINE RS1_T6 .00800F00
|
||||||
|
|
||||||
|
;; Second source registers
|
||||||
|
;; register_number << 20
|
||||||
|
DEFINE RS2_RA .00001000
|
||||||
|
DEFINE RS2_SP .00002000
|
||||||
|
DEFINE RS2_GP .00003000
|
||||||
|
DEFINE RS2_TP .00004000
|
||||||
|
DEFINE RS2_T0 .00005000
|
||||||
|
DEFINE RS2_T1 .00006000
|
||||||
|
DEFINE RS2_T2 .00007000
|
||||||
|
DEFINE RS2_S0 .00008000
|
||||||
|
DEFINE RS2_FP .00008000
|
||||||
|
DEFINE RS2_S1 .00009000
|
||||||
|
DEFINE RS2_A0 .0000A000
|
||||||
|
DEFINE RS2_A1 .0000B000
|
||||||
|
DEFINE RS2_A2 .0000C000
|
||||||
|
DEFINE RS2_A3 .0000D000
|
||||||
|
DEFINE RS2_A4 .0000E000
|
||||||
|
DEFINE RS2_A5 .0000F000
|
||||||
|
DEFINE RS2_A6 .00000001
|
||||||
|
DEFINE RS2_A7 .00001001
|
||||||
|
DEFINE RS2_S2 .00002001
|
||||||
|
DEFINE RS2_S3 .00003001
|
||||||
|
DEFINE RS2_S4 .00004001
|
||||||
|
DEFINE RS2_S5 .00005001
|
||||||
|
DEFINE RS2_S6 .00006001
|
||||||
|
DEFINE RS2_S7 .00007001
|
||||||
|
DEFINE RS2_S8 .00008001
|
||||||
|
DEFINE RS2_S9 .00009001
|
||||||
|
DEFINE RS2_S10 .0000A001
|
||||||
|
DEFINE RS2_S11 .0000B001
|
||||||
|
DEFINE RS2_T3 .0000C001
|
||||||
|
DEFINE RS2_T4 .0000D001
|
||||||
|
DEFINE RS2_T5 .0000E001
|
||||||
|
DEFINE RS2_T6 .0000F001
|
||||||
|
|
||||||
|
DEFINE RS2_X0 .00000000
|
||||||
|
DEFINE RS2_X1 .00001000
|
||||||
|
DEFINE RS2_X2 .00002000
|
||||||
|
DEFINE RS2_X3 .00003000
|
||||||
|
DEFINE RS2_X4 .00004000
|
||||||
|
DEFINE RS2_X5 .00005000
|
||||||
|
DEFINE RS2_X6 .00006000
|
||||||
|
DEFINE RS2_X7 .00007000
|
||||||
|
DEFINE RS2_X8 .00008000
|
||||||
|
DEFINE RS2_X9 .00009000
|
||||||
|
DEFINE RS2_X10 .0000A000
|
||||||
|
DEFINE RS2_X11 .0000B000
|
||||||
|
DEFINE RS2_X12 .0000C000
|
||||||
|
DEFINE RS2_X13 .0000D000
|
||||||
|
DEFINE RS2_X14 .0000E000
|
||||||
|
DEFINE RS2_X15 .0000F000
|
||||||
|
DEFINE RS2_X16 .00000001
|
||||||
|
DEFINE RS2_X17 .00001001
|
||||||
|
DEFINE RS2_X18 .00002001
|
||||||
|
DEFINE RS2_X19 .00003001
|
||||||
|
DEFINE RS2_X20 .00004001
|
||||||
|
DEFINE RS2_X21 .00005001
|
||||||
|
DEFINE RS2_X22 .00006001
|
||||||
|
DEFINE RS2_X23 .00007001
|
||||||
|
DEFINE RS2_X24 .00008001
|
||||||
|
DEFINE RS2_X25 .00009001
|
||||||
|
DEFINE RS2_X26 .0000A001
|
||||||
|
DEFINE RS2_X27 .0000B001
|
||||||
|
DEFINE RS2_X28 .0000C001
|
||||||
|
DEFINE RS2_X29 .0000D001
|
||||||
|
DEFINE RS2_X30 .0000E001
|
||||||
|
DEFINE RS2_X31 .0000F001
|
30
lib/mes/__init_io.c
Normal file
30
lib/mes/__init_io.c
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU Mes is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or (at
|
||||||
|
* your option) any later version.
|
||||||
|
*
|
||||||
|
* GNU Mes is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "mes/lib-mini.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
__init_io (int argc, char** argv, char** envp)
|
||||||
|
{
|
||||||
|
__stdin = 0;
|
||||||
|
__stdout = 1;
|
||||||
|
__stderr = 2;
|
||||||
|
environ = envp;
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
### GNU Mes --- Maxwell Equations of Software
|
### GNU Mes --- Maxwell Equations of Software
|
||||||
### Copyright © 2017,2018,2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
### Copyright © 2017,2018,2020,2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
### Copyright © 2019,2020 Danny Milosavljevic <dannym@scratchpost.org>
|
### Copyright © 2019,2020 Danny Milosavljevic <dannym@scratchpost.org>
|
||||||
### Copyright © 2021 W. J. van der Laan <laanwj@protonmail.com>
|
### Copyright © 2021 W. J. van der Laan <laanwj@protonmail.com>
|
||||||
###
|
###
|
||||||
|
@ -326,6 +326,7 @@ DEFINE mv_____%s10,%x0 130d0000
|
||||||
DEFINE mv_____%s11,%t0 938d0200
|
DEFINE mv_____%s11,%t0 938d0200
|
||||||
DEFINE mv_____%s11,%t1 930d0300
|
DEFINE mv_____%s11,%t1 930d0300
|
||||||
DEFINE mv_____%s11,%x0 930d0000
|
DEFINE mv_____%s11,%x0 930d0000
|
||||||
|
|
||||||
DEFINE ld_____%a7,0x10(%fp) 83380401
|
DEFINE ld_____%a7,0x10(%fp) 83380401
|
||||||
DEFINE ld_____%a0,0x18(%fp) 03358401
|
DEFINE ld_____%a0,0x18(%fp) 03358401
|
||||||
DEFINE ld_____%a1,0x20(%fp) 83350402
|
DEFINE ld_____%a1,0x20(%fp) 83350402
|
||||||
|
@ -335,6 +336,18 @@ DEFINE ld_____%a4,0x38(%fp) 03378403
|
||||||
DEFINE ld_____%a0,0x10(%fp) 03350401
|
DEFINE ld_____%a0,0x10(%fp) 03350401
|
||||||
DEFINE ld_____%a1,0x18(%fp) 83358401
|
DEFINE ld_____%a1,0x18(%fp) 83358401
|
||||||
DEFINE ld_____%a2,0x20(%fp) 03360402
|
DEFINE ld_____%a2,0x20(%fp) 03360402
|
||||||
|
|
||||||
|
DEFINE ld_____%a0,-0x08(%fp) 033584ff
|
||||||
|
DEFINE ld_____%a1,-0x10(%fp) 833504ff
|
||||||
|
DEFINE ld_____%a2,-0x18(%fp) 033684fe
|
||||||
|
|
||||||
|
DEFINE ld_____%a7,-0x08(%fp) 833884ff
|
||||||
|
DEFINE ld_____%a0,-0x10(%fp) 033504ff
|
||||||
|
DEFINE ld_____%a1,-0x18(%fp) 833584fe
|
||||||
|
DEFINE ld_____%a2,-0x20(%fp) 033604fe
|
||||||
|
DEFINE ld_____%a3,-0x28(%fp) 833684fd
|
||||||
|
DEFINE ld_____%a4,-0x30(%fp) 033704fd
|
||||||
|
|
||||||
DEFINE ld_____%fp,0x10(%fp) 03340401
|
DEFINE ld_____%fp,0x10(%fp) 03340401
|
||||||
DEFINE ld_____%t0,0x8(%fp) 83328400
|
DEFINE ld_____%t0,0x8(%fp) 83328400
|
||||||
DEFINE ld_____%sp,0x10(%fp) 03310401
|
DEFINE ld_____%sp,0x10(%fp) 03310401
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* -*-comment-start: "//";comment-end:""-*-
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
* GNU Mes --- Maxwell Equations of Software
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
* Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
* Copyright © 2016,2017,2018,2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
*
|
*
|
||||||
* This file is part of GNU Mes.
|
* This file is part of GNU Mes.
|
||||||
*
|
*
|
||||||
|
@ -25,7 +25,9 @@ int
|
||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
eputs ("Hi Mes!\n");
|
eputs ("Hi Mes!\n");
|
||||||
#if __MESC_MES__
|
#if __M2__
|
||||||
|
eputs ("MESC.M2\n");
|
||||||
|
#elif __MESC_MES__
|
||||||
eputs ("MESC.MES\n");
|
eputs ("MESC.MES\n");
|
||||||
#else
|
#else
|
||||||
eputs ("MESC.GUILE\n");
|
eputs ("MESC.GUILE\n");
|
||||||
|
|
|
@ -31,6 +31,7 @@ M2-Planet \
|
||||||
-D __linux__=1 \
|
-D __linux__=1 \
|
||||||
-f include/mes/lib-mini.h \
|
-f include/mes/lib-mini.h \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/crt1.c \
|
-f lib/linux/${mes_cpu}-mes-m2/crt1.c \
|
||||||
|
-f lib/mes/__init_io.c \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/_exit.c \
|
-f lib/linux/${mes_cpu}-mes-m2/_exit.c \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/_write.c \
|
-f lib/linux/${mes_cpu}-mes-m2/_write.c \
|
||||||
-f lib/string/strlen.c \
|
-f lib/string/strlen.c \
|
||||||
|
|
|
@ -31,6 +31,7 @@ M2-Planet \
|
||||||
-D __linux__=1 \
|
-D __linux__=1 \
|
||||||
-f include/mes/lib-mini.h \
|
-f include/mes/lib-mini.h \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/crt1.c \
|
-f lib/linux/${mes_cpu}-mes-m2/crt1.c \
|
||||||
|
-f lib/mes/__init_io.c \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/_exit.c \
|
-f lib/linux/${mes_cpu}-mes-m2/_exit.c \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/_write.c \
|
-f lib/linux/${mes_cpu}-mes-m2/_write.c \
|
||||||
-f lib/string/strlen.c \
|
-f lib/string/strlen.c \
|
||||||
|
|
|
@ -31,6 +31,7 @@ M2-Planet \
|
||||||
-D __${cc_cpu}__=1 \
|
-D __${cc_cpu}__=1 \
|
||||||
-D __linux__=1 \
|
-D __linux__=1 \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/crt1.c \
|
-f lib/linux/${mes_cpu}-mes-m2/crt1.c \
|
||||||
|
-f lib/mes/__init_io.c \
|
||||||
-f lib/mes/globals.c \
|
-f lib/mes/globals.c \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/_exit.c \
|
-f lib/linux/${mes_cpu}-mes-m2/_exit.c \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/_write.c \
|
-f lib/linux/${mes_cpu}-mes-m2/_write.c \
|
||||||
|
|
|
@ -31,6 +31,7 @@ M2-Planet \
|
||||||
-D __linux__=1 \
|
-D __linux__=1 \
|
||||||
-f include/mes/lib-mini.h \
|
-f include/mes/lib-mini.h \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/crt1.c \
|
-f lib/linux/${mes_cpu}-mes-m2/crt1.c \
|
||||||
|
-f lib/mes/__init_io.c \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/_exit.c \
|
-f lib/linux/${mes_cpu}-mes-m2/_exit.c \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/_write.c \
|
-f lib/linux/${mes_cpu}-mes-m2/_write.c \
|
||||||
-f lib/string/strlen.c \
|
-f lib/string/strlen.c \
|
||||||
|
|
|
@ -31,6 +31,7 @@ M2-Planet \
|
||||||
-D __${cc_cpu}__=1 \
|
-D __${cc_cpu}__=1 \
|
||||||
-D __linux__=1 \
|
-D __linux__=1 \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/crt1.c \
|
-f lib/linux/${mes_cpu}-mes-m2/crt1.c \
|
||||||
|
-f lib/mes/__init_io.c \
|
||||||
-f lib/mes/globals.c \
|
-f lib/mes/globals.c \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/_exit.c \
|
-f lib/linux/${mes_cpu}-mes-m2/_exit.c \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/_write.c \
|
-f lib/linux/${mes_cpu}-mes-m2/_write.c \
|
||||||
|
|
|
@ -30,6 +30,7 @@ M2-Planet \
|
||||||
-D __${cc_cpu}__=1 \
|
-D __${cc_cpu}__=1 \
|
||||||
-D __linux__=1 \
|
-D __linux__=1 \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/crt1.c \
|
-f lib/linux/${mes_cpu}-mes-m2/crt1.c \
|
||||||
|
-f lib/mes/__init_io.c \
|
||||||
-f scaffold/main.c \
|
-f scaffold/main.c \
|
||||||
-o scaffold/main.M1
|
-o scaffold/main.M1
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ M2-Planet \
|
||||||
-D __${cc_cpu}__=1 \
|
-D __${cc_cpu}__=1 \
|
||||||
-D __linux__=1 \
|
-D __linux__=1 \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/crt1.c \
|
-f lib/linux/${mes_cpu}-mes-m2/crt1.c \
|
||||||
|
-f lib/mes/__init_io.c \
|
||||||
-f include/mes/lib-mini.h \
|
-f include/mes/lib-mini.h \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/_write.c \
|
-f lib/linux/${mes_cpu}-mes-m2/_write.c \
|
||||||
-f lib/linux/${mes_cpu}-mes-m2/_exit.c \
|
-f lib/linux/${mes_cpu}-mes-m2/_exit.c \
|
||||||
|
@ -47,6 +48,7 @@ M2-Planet \
|
||||||
-f lib/mes/fdgetc.c \
|
-f lib/mes/fdgetc.c \
|
||||||
-f lib/stdio/getchar.c \
|
-f lib/stdio/getchar.c \
|
||||||
-f lib/stdio/putchar.c \
|
-f lib/stdio/putchar.c \
|
||||||
|
-f include/fcntl.h \
|
||||||
-f lib/linux/open.c \
|
-f lib/linux/open.c \
|
||||||
-f include/m2/types.h \
|
-f include/m2/types.h \
|
||||||
-f include/sys/types.h \
|
-f include/sys/types.h \
|
||||||
|
|
Loading…
Reference in a new issue