"Antti Kantee" <po...@netbsd.org> wrote: > Add support for the Extensible MIPS ("eMIPS") platform. The > NetBSD/emips port runs on Xilinx and Beecube FPGA systems and the > Giano system simulator. > > eMIPS is a platform developed at Microsoft Research for researching > reconfigurable computing. eMIPS allows dynamic loading and scheduling > of application-specific circuits for the purpose of accelerating > computations based on the current workload. > > NetBSD eMIPS support for NetBSD 4.x was written at Microsoft Research > by Alessandro Forin and Neil Pittman. Microsoft Corporation has > donated full copyright to The NetBSD Foundation. > > Platform support for eMIPS is the first part of Microsoft's > contribution. The second part includes the hardware accelerator > framework and will be proposed on tech-kern soon.
Interesting! > <...> > cvs rdiff -u -r1.132 -r1.133 src/sys/arch/mips/mips/vm_machdep.c cvs rdiff -u > -r1.5 -r1.6 > +/* > + * Make a kernel mapping valid for I/O, e.g. non-cachable. > + * Alignment and length constraints are as-if NBPG==PAGE_SIZE. > + */ > +int > +ioaccess(vaddr_t vaddr, paddr_t paddr, vsize_t len) > +{ > + > + while (len > PAGE_SIZE) { > + pmap_kenter_pa(vaddr, paddr, VM_PROT_WRITE, 0); > + len -= PAGE_SIZE; > + vaddr += PAGE_SIZE; > + paddr += PAGE_SIZE; > + } > + > + if (len) { > + /* We could warn.. */ > + pmap_kenter_pa(vaddr, paddr, VM_PROT_WRITE, 0); > + } > + > + /* BUGBUG should use pmap_enter() instead and check results! */ > + return 0; > +} > + > +/* > + * Opposite to the above: just forget the mapping. > + */ > +int > +iounaccess(vaddr_t vaddr, vsize_t len) > +{ > + > + pmap_kremove(vaddr, len); > + return 0; > +} What is this miracle, however? -- Mindaugas