From ecc71a12b49f915f16c01dc73ad84559ec1bc790 Mon Sep 17 00:00:00 2001 From: brent hartshorn Date: Fri, 30 Aug 2024 14:58:53 -0700 Subject: [PATCH 01/11] RISC-V support for label_t --- sys/include/types.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sys/include/types.h b/sys/include/types.h index 30609226..f5496e2c 100644 --- a/sys/include/types.h +++ b/sys/include/types.h @@ -36,6 +36,16 @@ typedef struct label_t { unsigned val[12]; /* regs S0-S8, RA, GP and SP */ } label_t; #endif +#ifdef __riscv +typedef struct label_t { + unsigned val[33]; /* regs x0-x31, GP */ + #ifdef __riscv_f + unsigned fval[32]; /* regs f0-f31 */ + #endif +} label_t; +#endif + + typedef long daddr_t; typedef char * caddr_t; typedef u_int ino_t; From d3c8cd0e9eb95db7efb70d83f71d74cbc94c678a Mon Sep 17 00:00:00 2001 From: brent hartshorn Date: Fri, 30 Aug 2024 15:13:03 -0700 Subject: [PATCH 02/11] RISC-V support for u_frame --- sys/kernel/sys_pipe.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sys/kernel/sys_pipe.c b/sys/kernel/sys_pipe.c index 7c380ba9..c82b4cec 100644 --- a/sys/kernel/sys_pipe.c +++ b/sys/kernel/sys_pipe.c @@ -294,7 +294,11 @@ pipe() /* Move a secondary return value to register $v1. */ u.u_frame [FRAME_R3] = u.u_rval; #else -#error "pipe return value for unknown architecture" + #ifdef __riscv + u.u_frame [FRAME_R3] = u.u_rval; + #else + #error "pipe return value for unknown architecture" + #endif #endif u.u_rval = r; wf->f_flag = FWRITE; From b79ecf0910174468e1bb7c5bd92df5f6257e23b2 Mon Sep 17 00:00:00 2001 From: brent hartshorn Date: Fri, 30 Aug 2024 18:02:02 -0700 Subject: [PATCH 03/11] RISC-V io support --- sys/pic32/io.h | 68 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 66 insertions(+), 2 deletions(-) diff --git a/sys/pic32/io.h b/sys/pic32/io.h index f3df65a7..de9c4936 100644 --- a/sys/pic32/io.h +++ b/sys/pic32/io.h @@ -97,9 +97,15 @@ unsigned ucall (int priority, void *address, int arg1, int arg2); static void inline __attribute__ ((always_inline)) mips_set_stack_pointer (void *x) { + #ifdef __riscv + asm volatile ( + "mv sp,a0" + : : "r" (x) : "sp"); + #else asm volatile ( "move $sp, %0" : : "r" (x) : "sp"); + #endif } /* @@ -109,10 +115,15 @@ static inline __attribute__ ((always_inline)) void *mips_get_stack_pointer () { void *x; - + #ifdef __riscv + asm volatile ( + "mv a0,sp" + : "=r" (x)); + #else asm volatile ( "move %0, $sp" : "=r" (x)); + #endif return x; } @@ -145,7 +156,14 @@ static int inline __attribute__ ((always_inline)) mips_intr_disable () { int status; + #ifdef __riscv + asm volatile ( + "csrr a0,mstatus\n" + "sfence.vma" + : "=r" (status)); + #else asm volatile ("di %0" : "=r" (status)); + #endif return status; } @@ -156,7 +174,11 @@ static void inline __attribute__ ((always_inline)) mips_intr_restore (int x) { /* C0_STATUS */ + #ifdef __riscv + asm volatile ("csrw mstatus,a0"); + #else mips_write_c0_register (12, 0, x); + #endif } /* @@ -165,7 +187,11 @@ mips_intr_restore (int x) static void inline __attribute__ ((always_inline)) mips_ehb() { + #ifdef __riscv + asm volatile ("fence"); + #else asm volatile ("ehb"); + #endif } /* @@ -175,7 +201,17 @@ static int inline __attribute__ ((always_inline)) mips_intr_enable () { int status; + #ifdef __riscv + asm volatile ( + "csrr a0, mstatus\n" + "sfence.vma\n" + "li a1, 0x0001\n" // Enable interrupts (SIE bit) + "or a0, a0,a1\n" + "csrw mstatus, a0" + : "=r" (status)); + #else asm volatile ("ei %0" : "=r" (status)); + #endif return status; } @@ -186,9 +222,16 @@ static int inline __attribute__ ((always_inline)) mips_clz (unsigned x) { int n; - + #ifdef __riscv + if (x != 0) { + while ((x & (1 << n)) == 0) { + n--; + } + } + #else asm volatile ("clz %0, %1" : "=r" (n) : "r" (x)); + #endif return n; } @@ -199,11 +242,32 @@ static unsigned inline __attribute__ ((always_inline)) mips_bswap (unsigned x) { int n; + #ifdef __riscv + asm volatile ( + "li t0, 0xff\n" // Load immediate with all ones + "sll t1, t0, 24\n" // Move all ones to the most significant byte + "srl t2, a0, 24\n" // Extract the most significant byte + "and t3, t1, t2\n" // Combine all ones with the most significant byte + "sra a0, a0, 24\n" // Shift the remaining bytes right by 24 bits + "ins a0, t3, 0, 8\n"// Insert the combined byte into the most significant position + "sll t1, t0, 8\n" // Move all ones to the second byte + "srl t2, a0, 16\n" // Extract the second byte + "and t3, t1, t2\n" // Combine all ones with the second byte + "sra a0, a0, 16\n" // Shift the remaining bytes right by 16 bits + "ins a0, t3, 8, 8\n" // Insert the combined byte into the second position + "sll t1, t0, 0\n" // Move all ones to the least significant byte + "srl t2, a0, 8\n" // Extract the least significant byte + "and t3, t1, t2\n" // Combine all ones with the least significant byte + "sra a0, a0, 8\n" // Shift the remaining byte right by 8 bits + "ins a0, t3, 16, 8" // Insert the combined byte into the least significant position + : "=r" (n) : "r" (x)); + #else asm volatile ( "wsbh %0, %1 \n" "rotr %0, 16" : "=r" (n) : "r" (x)); + #endif return n; } #endif /* __ASSEMBLER__ */ From c743712df84bba05787d03912799c0dfdbf1c9a9 Mon Sep 17 00:00:00 2001 From: brent hartshorn Date: Sat, 31 Aug 2024 07:12:50 -0700 Subject: [PATCH 04/11] riscv build script --- retrobsd.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 retrobsd.py diff --git a/retrobsd.py b/retrobsd.py new file mode 100644 index 00000000..fbf9915a --- /dev/null +++ b/retrobsd.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python3 +import os, sys, subprocess + + +def c2o(file, out='/tmp/c2o.o', includes=None, defines=None, opt='-O0', bits=64 ): + if 'fedora' in os.uname().nodename: + cmd = ['riscv64-linux-gnu-gcc'] + else: + cmd = ['riscv64-unknown-elf-gcc'] + + if bits==32: + cmd.append('-march=rv32i') + cmd.append('-mabi=ilp32') + + cmd += [ + '-c', '-mcmodel=medany', '-fomit-frame-pointer', '-ffunction-sections', + '-ffreestanding', '-nostdlib', '-nostartfiles', '-nodefaultlibs', + opt, '-g', '-o', out, file + ] + if includes: + for inc in includes: + if not inc.startswith('-I'): inc = '-I'+inc + cmd.append(inc) + if defines: + for d in defines: + if not d.startswith('-D'): d = '-D'+d + cmd.append(d) + + print(cmd) + subprocess.check_call(cmd) + return out + + +def mkkernel(): + defines = ['KERNEL'] + includes = [ + './include' + ] + obs = [] + for name in os.listdir('./sys/kernel/'): + assert name.endswith('.c') + print(name) + o = c2o( + os.path.join('./sys/kernel', name), + out = '/tmp/%s.o' % name, + includes=includes, defines=defines, bits=32) + obs.append(o) + + print(obs) + + +if __name__=='__main__': + mkkernel() \ No newline at end of file From 38f1ee570f55adaf1449cb559b3dc07199e37921 Mon Sep 17 00:00:00 2001 From: brent hartshorn Date: Sat, 31 Aug 2024 09:07:15 -0700 Subject: [PATCH 05/11] riscv header --- sys/pic32/riscv.h | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 sys/pic32/riscv.h diff --git a/sys/pic32/riscv.h b/sys/pic32/riscv.h new file mode 100644 index 00000000..ba0a0618 --- /dev/null +++ b/sys/pic32/riscv.h @@ -0,0 +1,4 @@ +#pragma once + +#define ST_RP 0x08000000 /* Enable reduced power mode */ +#define ST_UM 0x00000010 /* User mode */ From 6f9cd3a797d0464a8e4f1f81883d632d73329874 Mon Sep 17 00:00:00 2001 From: brent hartshorn Date: Sat, 31 Aug 2024 09:09:43 -0700 Subject: [PATCH 06/11] #include machine/riscv.h --- sys/pic32/io.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sys/pic32/io.h b/sys/pic32/io.h index de9c4936..6272522a 100644 --- a/sys/pic32/io.h +++ b/sys/pic32/io.h @@ -27,6 +27,10 @@ #ifdef PIC32MX7 # include "machine/pic32mx.h" #endif +#ifdef __riscv + #include "machine/riscv.h" +#endif + /* * Offsets of register values in saved context. From 76feb0d82f50879933d566fc2fecc86d15728a6c Mon Sep 17 00:00:00 2001 From: brent hartshorn Date: Sat, 31 Aug 2024 09:20:38 -0700 Subject: [PATCH 07/11] struct devspec fixes error: ``` ['riscv64-unknown-elf-gcc', '-march=rv32i', '-mabi=ilp32', '-c', '-mcmodel=medany', '-fomit-frame-pointer', '-ffunction-sections', '-ffreestanding', '-nostdlib', '-nostartfiles', '-nodefaultlibs', '-O0', '-g', '-o', '/tmp/subr_log.c.o', './sys/kernel/subr_log.c', '-I./include', '-DKERNEL'] ./sys/kernel/subr_log.c:35:22: error: array type has incomplete element type 'struct devspec' 35 | const struct devspec logdevs[] = { ``` --- sys/pic32/riscv.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sys/pic32/riscv.h b/sys/pic32/riscv.h index ba0a0618..643c8dcc 100644 --- a/sys/pic32/riscv.h +++ b/sys/pic32/riscv.h @@ -2,3 +2,8 @@ #define ST_RP 0x08000000 /* Enable reduced power mode */ #define ST_UM 0x00000010 /* User mode */ + +struct devspec { + unsigned _id; + const char *_name; +}; From ecbadafd270021aece1a85cf43cdc2a8ce8e514a Mon Sep 17 00:00:00 2001 From: brent hartshorn Date: Sat, 31 Aug 2024 09:39:09 -0700 Subject: [PATCH 08/11] link retrobsd.elf ``` riscv64-unknown-elf-ld: /tmp/kern_sysctl.c.o: in function `fill_from_u': /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:753: undefined reference to `swapdev' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:757: undefined reference to `swapdev' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:759: undefined reference to `bdevsw' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:760: undefined reference to `u' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:773: undefined reference to `u' riscv64-unknown-elf-ld: /tmp/kern_sysctl.c.o: in function `sysctl_doproc': /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:882: undefined reference to `copyout' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:886: undefined reference to `copyout' Traceback (most recent call last): File "/home/rap/cbacktick/retrobsd/retrobsd.py", line 59, in mkkernel() File "/home/rap/cbacktick/retrobsd/retrobsd.py", line 56, in mkkernel subprocess.check_call(cmd) File "/usr/lib/python3.11/subprocess.py", line 413, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['riscv64-unknown-elf-ld', '-march=rv32', '-m', 'elf32lriscv', '-o', '/tmp/retrobsd.elf', '/tmp/vfs_vnops.c.o', '/tmp/tty.c.o', '/tmp/subr_prf.c.o', '/tmp/init_main.c.o', '/tmp/sys_pipe.c.o', '/tmp/kern_prot.c.o', '/tmp/exec_subr.c.o', '/tmp/kern_descrip.c.o', '/tmp/ufs_mount.c.o', '/tmp/ufs_dsort.c.o', '/tmp/init_sysent.c.o', '/tmp/sys_generic.c.o', '/tmp/exec_conf.c.o', '/tmp/ufs_inode.c.o', '/tmp/kern_glob.c.o', '/tmp/ufs_namei.c.o', '/tmp/vm_swp.c.o', '/tmp/kern_prot2.c.o', '/tmp/kern_sig2.c.o', '/tmp/exec_elf.c.o', '/tmp/sys_inode.c.o', '/tmp/vm_swap.c.o', '/tmp/tty_pty.c.o', '/tmp/kern_mman.c.o', '/tmp/kern_sig.c.o', '/tmp/syscalls.c.o', '/tmp/ufs_syscalls2.c.o', '/tmp/sys_process.c.o', '/tmp/kern_subr.c.o', '/tmp/ufs_syscalls.c.o', '/tmp/kern_synch.c.o', '/tmp/vm_sched.c.o', '/tmp/kern_clock.c.o', '/tmp/ufs_bio.c.o', '/tmp/ufs_alloc.c.o', '/tmp/ufs_subr.c.o', '/tmp/subr_rmap.c.o', '/tmp/kern_proc.c.o', '/tmp/tty_subr.c.o', '/tmp/kern_exec.c.o', '/tmp/exec_aout.c.o', '/tmp/ufs_bmap.c.o', '/tmp/kern_exit.c.o', '/tmp/exec_script.c.o', '/tmp/kern_fork.c.o', '/tmp/subr_log.c.o', '/tmp/kern_time.c.o', '/tmp/tty_tty.c.o', '/tmp/ufs_fio.c.o', '/tmp/kern_resource.c.o', '/tmp/kern_sysctl.c.o']' returned non-zero exit status 1. ``` --- retrobsd.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/retrobsd.py b/retrobsd.py index fbf9915a..d52dc44f 100644 --- a/retrobsd.py +++ b/retrobsd.py @@ -46,8 +46,14 @@ def mkkernel(): includes=includes, defines=defines, bits=32) obs.append(o) - print(obs) + if 'fedora' in os.uname().nodename: + cmd = ['riscv64-linux-gnu-ld'] + else: + cmd = ['riscv64-unknown-elf-ld'] + cmd += ['-march=rv32', '-m', 'elf32lriscv', '-o', '/tmp/retrobsd.elf'] + obs + print(cmd) + subprocess.check_call(cmd) if __name__=='__main__': - mkkernel() \ No newline at end of file + mkkernel() From ae62f7d81cc0ffcd4e45d799084a507bb3e19f41 Mon Sep 17 00:00:00 2001 From: brent hartshorn Date: Sat, 31 Aug 2024 10:09:50 -0700 Subject: [PATCH 09/11] trying to compile builddep.c --- retrobsd.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/retrobsd.py b/retrobsd.py index d52dc44f..d8262885 100644 --- a/retrobsd.py +++ b/retrobsd.py @@ -46,12 +46,20 @@ def mkkernel(): includes=includes, defines=defines, bits=32) obs.append(o) + macho = [] + for name in 'machdep'.split(): + o = c2o( + './sys/pic32/%s.c' % name, + out = '/tmp/_riscv_%s.o' % name, + includes=includes, defines=defines, bits=32) + macho.append(o) + if 'fedora' in os.uname().nodename: cmd = ['riscv64-linux-gnu-ld'] else: cmd = ['riscv64-unknown-elf-ld'] - cmd += ['-march=rv32', '-m', 'elf32lriscv', '-o', '/tmp/retrobsd.elf'] + obs + cmd += ['-march=rv32', '-m', 'elf32lriscv', '-o', '/tmp/retrobsd.elf'] + obs + macho print(cmd) subprocess.check_call(cmd) From 5079987099041e2efad89bbec3c802428d829d23 Mon Sep 17 00:00:00 2001 From: brent hartshorn Date: Sat, 31 Aug 2024 10:12:50 -0700 Subject: [PATCH 10/11] TRISA and PIC32_R --- sys/pic32/riscv.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sys/pic32/riscv.h b/sys/pic32/riscv.h index 643c8dcc..a0254a29 100644 --- a/sys/pic32/riscv.h +++ b/sys/pic32/riscv.h @@ -3,6 +3,17 @@ #define ST_RP 0x08000000 /* Enable reduced power mode */ #define ST_UM 0x00000010 /* User mode */ +// Peripheral registers. +#ifdef __ASSEMBLER__ +#define PIC32_R(a) (0xBF800000 + (a)) +#else +#define PIC32_R(a) *(volatile unsigned*)(0xBF800000 + (a)) +#endif + + +// Port A-G registers. +#define TRISA PIC32_R (0x86000) /* Port A: mask of inputs */ + struct devspec { unsigned _id; const char *_name; From a6990213306fb92fb4e2fe95c1bee2fd516413b3 Mon Sep 17 00:00:00 2001 From: brent hartshorn Date: Sun, 1 Sep 2024 08:38:51 -0700 Subject: [PATCH 11/11] minimal main riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:616: undefined reference to `file' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:632: undefined reference to `file' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:640: undefined reference to `copyout' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:641: undefined reference to `copyout' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:632: undefined reference to `file' riscv64-unknown-elf-ld: /tmp/kern_sysctl.c.o: in function `sysctl_inode': /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:687: undefined reference to `inode' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:687: undefined reference to `inode' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:698: undefined reference to `inode' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:706: undefined reference to `copyout' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:707: undefined reference to `copyout' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:698: undefined reference to `inode' riscv64-unknown-elf-ld: /tmp/kern_sysctl.c.o: in function `fill_from_u': /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:753: undefined reference to `swapdev' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:757: undefined reference to `swapdev' riscv64-unknown-elf-ld: /tmp/kern_sysctl.c.o: in function `sysctl_doproc': /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:881: undefined reference to `copyout' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/kernel/kern_sysctl.c:885: undefined reference to `copyout' riscv64-unknown-elf-ld: /tmp/_riscv_devsw.o:(.rodata+0xdc): undefined reference to `mmrw' riscv64-unknown-elf-ld: /tmp/_riscv_devsw.o:(.rodata+0xe0): undefined reference to `mmrw' riscv64-unknown-elf-ld: /tmp/_riscv_swap.o: in function `swopen': /home/rap/cbacktick/retrobsd/./sys/pic32/swap.c:37: undefined reference to `swapdev' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/pic32/swap.c:37: undefined reference to `swapdev' riscv64-unknown-elf-ld: /tmp/_riscv_swap.o: in function `swclose': /home/rap/cbacktick/retrobsd/./sys/pic32/swap.c:49: undefined reference to `swapdev' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/pic32/swap.c:49: undefined reference to `swapdev' riscv64-unknown-elf-ld: /tmp/_riscv_swap.o: in function `swcioctl': /home/rap/cbacktick/retrobsd/./sys/pic32/swap.c:193: undefined reference to `swapmap' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/pic32/swap.c:195: undefined reference to `swapmap' riscv64-unknown-elf-ld: /tmp/_riscv_swap.o: in function `swstrategy': /home/rap/cbacktick/retrobsd/./sys/pic32/swap.c:224: undefined reference to `swapdev' riscv64-unknown-elf-ld: /home/rap/cbacktick/retrobsd/./sys/pic32/swap.c:225: undefined reference to `swapdev' Traceback (most recent call last): File "/home/rap/cbacktick/retrobsd/retrobsd.py", line 117, in mkkernel() --- retrobsd.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/retrobsd.py b/retrobsd.py index d8262885..5c71efa4 100644 --- a/retrobsd.py +++ b/retrobsd.py @@ -1,6 +1,41 @@ #!/usr/bin/env python3 import os, sys, subprocess +RISCV_MACHINE_MIN = ''' +#include "sys/param.h" +#include "sys/user.h" +#include "sys/proc.h" +int cmask = CMASK; + +int securelevel = -1; + +struct user u = {}; +void _start(){ + struct proc *p; + p = &proc[0]; + //p->p_addr = *ka6; + p->p_stat = SRUN; + p->p_flag |= SLOAD|SSYS; + p->p_nice = NZERO; + + u.u_procp = p; /* init user structure */ + //u.u_ap = u.u_arg; + u.u_cmask = cmask; + u.u_lastfile = -1; + +#ifdef INET + if (netoff = netinit()) + printf("netinit failed\n"); + else + { + NETSETHZ(); + NETSTART(); + } +#endif + +} +''' + def c2o(file, out='/tmp/c2o.o', includes=None, defines=None, opt='-O0', bits=64 ): if 'fedora' in os.uname().nodename: @@ -9,7 +44,7 @@ def c2o(file, out='/tmp/c2o.o', includes=None, defines=None, opt='-O0', bits=64 cmd = ['riscv64-unknown-elf-gcc'] if bits==32: - cmd.append('-march=rv32i') + cmd.append('-march=rv32imac') cmd.append('-mabi=ilp32') cmd += [ @@ -32,11 +67,24 @@ def c2o(file, out='/tmp/c2o.o', includes=None, defines=None, opt='-O0', bits=64 def mkkernel(): - defines = ['KERNEL'] + defines = [ + 'KERNEL', + 'CONS_MAJOR=UART_MAJOR', + ] includes = [ './include' ] obs = [] + + rtmp = '/tmp/_riscv_.c' + open(rtmp,'w').write(RISCV_MACHINE_MIN) + o = c2o( + rtmp, + out = '/tmp/_riscv_.o', + includes=includes, defines=defines, bits=32) + obs.append(o) + + for name in os.listdir('./sys/kernel/'): assert name.endswith('.c') print(name) @@ -47,13 +95,15 @@ def mkkernel(): obs.append(o) macho = [] - for name in 'machdep'.split(): + #for name in 'machdep'.split(): + for name in 'devsw cons swap'.split(): o = c2o( './sys/pic32/%s.c' % name, out = '/tmp/_riscv_%s.o' % name, includes=includes, defines=defines, bits=32) macho.append(o) + if 'fedora' in os.uname().nodename: cmd = ['riscv64-linux-gnu-ld'] else: