182537b71Srtmxv6 is a re-implementation of Dennis Ritchie's and Ken Thompson's Unix 282537b71SrtmVersion 6 (v6). xv6 loosely follows the structure and style of v6, 382537b71Srtmbut is implemented for a modern x86-based multiprocessor using ANSI C. 4b52151e0Skaashoek 5bc54fa39SrtmACKNOWLEDGMENTS 62e898063Skaashoek 7f0400600Srscxv6 is inspired by John Lions's Commentary on UNIX 6th Edition (Peer 882537b71Srtmto Peer Communications; ISBN: 1-57398-013-7; 1st edition (June 14, 90f3d9d9dSFrans Kaashoek2000)). See also http://pdos.csail.mit.edu/6.828/2016/xv6.html, which 1082537b71Srtmprovides pointers to on-line resources for v6. 11b52151e0Skaashoek 1282537b71Srtmxv6 borrows code from the following sources: 1382537b71Srtm JOS (asm.h, elf.h, mmu.h, bootasm.S, ide.c, console.c, and others) 1482bb0b56SAustin Clements Plan 9 (entryother.S, mp.h, mp.c, lapic.c) 15801affcdSkaashoek FreeBSD (ioapic.c) 1682537b71Srtm NetBSD (console.c) 17801affcdSkaashoek 18*5bf3fbeeSFrans KaashoekThe following people have made contributions: Russ Cox (context switching, 19*5bf3fbeeSFrans Kaashoeklocking), Cliff Frey (MP), Xiao Yu (MP), Nickolai Zeldovich, and Austin 20*5bf3fbeeSFrans KaashoekClements. 21801affcdSkaashoek 22*5bf3fbeeSFrans KaashoekWe are also grateful for the bug reports and patches contributed by Silas 23*5bf3fbeeSFrans KaashoekBoyd-Wickizer, Mike CAT, Nelson Elhage, Nathaniel Filardo, Peter Froehlich, 24*5bf3fbeeSFrans KaashoekYakir Goaran, Shivam Handa, Bryan Henry, Jim Huang, Anders Kaseorg, kehao95, 25*5bf3fbeeSFrans KaashoekEddie Kohler, Imbar Marinescu, Yandong Mao, Hitoshi Mitake, Carmi Merimovich, 26*5bf3fbeeSFrans KaashoekJoel Nider, Greg Price, Ayan Shafqat, Eldar Sehayek, Yongming Shen, Cam Tenny, 27*5bf3fbeeSFrans KaashoekRafael Ubal, Warren Toomey, Stephen Tu, Pablo Ventura, Xi Wang, Keiichi 28*5bf3fbeeSFrans KaashoekWatanabe, Nicolas Wolovick, Jindong Zhang, and Zou Chang Wei. 297b814133SAustin Clements 30fa1b3410SrscThe code in the files that constitute xv6 is 310f3d9d9dSFrans KaashoekCopyright 2006-2016 Frans Kaashoek, Robert Morris, and Russ Cox. 322e898063Skaashoek 332e898063SkaashoekERROR REPORTS 342e898063Skaashoek 35801affcdSkaashoekIf you spot errors or have suggestions for improvement, please send 36bc54fa39Srtmemail to Frans Kaashoek and Robert Morris (kaashoek,rtm@csail.mit.edu). 37641e29c5Skaashoek 38bc54fa39SrtmBUILDING AND RUNNING XV6 394d33ef86Srsc 404d33ef86SrscTo build xv6 on an x86 ELF machine (like Linux or FreeBSD), run "make". 414d33ef86SrscOn non-x86 or non-ELF machines (like OS X, even on x86), you will 424d33ef86Srscneed to install a cross-compiler gcc suite capable of producing x86 ELF 43*5bf3fbeeSFrans Kaashoekbinaries. See http://pdos.csail.mit.edu/6.828/2016/tools.html. 444d33ef86SrscThen run "make TOOLPREFIX=i386-jos-elf-". 454d33ef86Srsc 46698b8fb5SFrans KaashoekTo run xv6, install the QEMU PC simulators. To run in QEMU, run "make qemu". 474d33ef86Srsc 484d245c79SAustin ClementsTo create a typeset version of the code, run "make xv6.pdf". This 494d245c79SAustin Clementsrequires the "mpage" utility. See http://www.mesa.nl/pub/mpage/. 50