summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-10-18efi: convert pixel format to bootscreen color channelcinap_lenrek
2014-10-18efi: make clean target virtualcinap_lenrek
2014-10-18efi: add experimental efi bootloadercinap_lenrek
this is basically a port of 9boot to EFI. theres support for IA32 (386) and X64 (amd64). has been tested only under qemu with OVMF so far.
2014-10-18pc, pc64: allow passing RSDT pointer in *acpi= boot parameter, early ↵cinap_lenrek
bootscreeninit(), fix rampage() usage rampage() cannot be used after meminit(), so test for conf.mem[0].npage != 0 and use xalloc()/mallocalign() instead. this allows us to use vmap() early before mmuinit() which is needed for bootscreeninit() and acpi. to get memory for page tables, pc64 needs a lowraminit(). with EFI, the RSDT pointer is passed in *acpi= parameter from the efi loader. as the RSDT is ususally at the end of the physical address space (and not to be found in bios areas), we cannot KMAP() it so we need to vmap().
2014-10-15sysupdate/psfax/play: fix unquoted brackets causing rc to perform ↵BurnZeZ
unnecessary file lookups
2014-10-13pc: add *bootscreen= variable to pass pre-initialized framebuffer info to kernelcinap_lenrek
EFI system has no cga or vesa anymore, so it becomes neccesary to pass GOP framebuffer info to the kernel to get some output on the screen.
2014-10-12pc: sanity check bda value in lowraminit() to avoid overflow with eficinap_lenrek
2014-10-12pkg: change default repo to http://9front.org/pkg/386stanley lieber
2014-10-11rio: fix "-cd dir" in mountspec being ignoredBurnZeZ
2014-10-06fortunes: You have an agenda.stanley lieber
2014-10-03games/gba: new faster ppu code, audio supportaiju
2014-09-30added gbatypeaiju
2014-09-30games/gba: fix dma repeat bit and eeprom addressesaiju
2014-09-30added crc32aiju
2014-09-29hgfs: make data files with meta headers having the right size after opencinap_lenrek
to get the right data size of a file, the revlog needs to have been opened and the metaheader parsed. as an optimization, we used to open revlog only on the first read resulting revlogs with metaheaders having the wrong size returned by fstat() until the first read(). tar relies on fstat() giving the correct file size, so just open the revlog on open. reading directories can still yield the wrong size but it is not that critical.
2014-09-29snap: change ulong return of stackptr() to uvlong for amd64cinap_lenrek
2014-09-28games/gba: small fixesaiju
2014-09-28apply ps2mouse corruption fix to omapcinap_lenrek
the omap ps2mouse driver is currently unused, but in case of being finished at some point, apply the fix from the pc driver.
2014-09-28mergecinap_lenrek
2014-09-28pc/pc64: fix ps2mouse memory corruption racecinap_lenrek
there was a memory corruption bug caused by us enabling the ps2mouseputc() handler *before* initializing packetsize. once we enabled the handler, mouse interrupts could come in and advance the packet buffer index (nb) beyond the buffer boundaries. as ps2mouseputc() only checked for ++nb == packetsize, once nb was advanced beyond the packetsize, it would continue writing beyond the buffer and corrupt memory with each mouse packet byte. solution is to initialize packetsize *before* enabling the handler, and also do a >= check in ps2mouseputc() in case the packetsize gets changed to a smaller value at runtime.
2014-09-28ndb/dns: request recursion only for local dns serverscinap_lenrek
we used to set RD flag in requests unconditionally, which is fine by the standard but some dns server administrators seem to use it as a denial of service indicator (for ther non recursive authoritative nameservers) and ignore the request. so only set the RD flag when talking to local dns servers.
2014-09-28devcons: avoid division by zero reading Qsysstatcinap_lenrek
alexchandel got the kernel to crash with divide error on qemu 2.1.2/macosx at this location. probably caused by perfticks()/tsc being wrong or accounttime() not having been called yet from timer interrupt yet for some reason.
2014-09-28games/gba: remove bogus fileaiju
2014-09-27mergeaiju
2014-09-27games/gba: slowly working (no pun intended)aiju
2014-09-27hgignore: ignore amd64 kernel and initmischief
2014-09-24pc64: enable rtl8169 driver (thanks awabimakoto for testing)mischief
2014-09-246c/8c: eleminate moves by swaping source and destination operands in ↵cinap_lenrek
peephole pass
2014-09-22acid: fix sysr1() stack corruptioncinap_lenrek
the syscall stubs (for amd64) currently have a unconditional spill of the first (register) argument to the stack. sysr1 (and _nsec) are exceptional in that they do not take any arguments, so the stub is writing unconditionally to ther first argument slot on the stack. i could avoid emiting the spill in the syscall stubs for sysr1 but that would also break truss which assumes fixed instruction sequence from stub start to the syscall number. i'm not going to complicate the syscall stubs just for sysr1 (_nsec is not used in 9front), but just add a dummy argument to sysr1 definition that can receive the bogus argument spill.
2014-09-21devip: sanity check Nchan in Fsproto()cinap_lenrek
devip can only handle Maskconv+1 conversations per protocol depending on how many bits it uses in the qid to encode the conversation number. we check this when the protocol gets registered. if we do not do this, the kernel will mysteriously panic when the conversaion numbers collide which took some time to debug.
2014-09-21sysinfo: relax regex for start of kernel boot messagescinap_lenrek
we used to look for /^Plan 9$/ for the start of kernel boot messages in /dev/kmesg. but the xen kernel prints Plan 9 (.....) on boot. so just look for line starting with /^Plan 9/ for now.
2014-09-21devip: print protocol name in garbage collection notificationcinap_lenrek
2014-09-21pc64: print "Plan 9" on boot, cleanup pccpu64 filescinap_lenrek
2014-09-20stats: handle /dev/sysstat 32bit overflow in delta calculationcinap_lenrek
the numbers from /dev/sysstat overflow on 32bit, so have to do subtraction modulo 2^32 as we calculate with 64bit integers. thanks mischief for reporting this.
2014-09-20pc64: syscallfmt for nsec syscallcinap_lenrek
2014-09-20pc64: put return value of nsec syscall in register on amd64cinap_lenrek
WHAT WHERE THEY *THINKING*??!?! unlike seek, the (new) nsec syscall (not used in 9front libc) returns the time value in register (from nix), so do the same for compatibility.
2014-09-19libmemdraw: fix byte ordering in memfillcolor()cinap_lenrek
memfillcolor() used to write longs in host byte order which is wrong. have to always use little endian. to simplify, moved little endian conversion into memsetl() and memsets() avoiding code duplication.
2014-09-19lib9p: fix nil dereference crash in remove for directory permission checkcinap_lenrek
file->parent can be nil when the file has been previously removed. removefile() deals with this, so skip the permission check in that case and let removefile() error out.
2014-09-17teg2: fix wrong l2 setshift address in wholecache() (from sources)cinap_lenrek
2014-09-16oggdec: recognize "begin of stream" packets and restart decodingcinap_lenrek
2014-09-16mergecinap_lenrek
2014-09-16libauthsrv: allow multiple auth= attributes for backup auth servers, ↵cinap_lenrek
authdial() tries each one in order some of us run auth servers from home that are used by multiple servers on the internet. when the home authserver becomes unreachable, services on the outside servers stop working. so we thought about specifing a secondary auth servers for backup when the primary server is not reachable. this changes authdial() to consult multiple auth= entries in the authdom= or dom= tuples, trying each one in order until dial() succeeds.
2014-09-15ramfs: allow changing mtime in wstatsmischief
2014-09-15hg: make intermediate directories like newer hg doesmischief
2014-09-16ramfs: fix directory check in wstat() (thanks mischief)cinap_lenrek
2014-09-15devtls: fix typo in debug printcinap_lenrek
2014-09-14telnetd: let the kernel place the shared segment in segattach() (thanks ↵cinap_lenrek
kenji arisawa)
2014-09-14libmemdraw: update drawtest to use same rounding in alpha calculation as ↵cinap_lenrek
libmemdraw
2014-09-14kernel: fix segattach() rounding of va+len (thanks kenji arisawa)cinap_lenrek
from segattach(2): Va and len specify the position of the segment in the process's address space. Va is rounded down to the nearest page boundary and va+len is rounded up. The system does not permit segments to overlap. If va is zero, the system will choose a suitable address. just rounding up len isnt enougth. we have to round up va+len instead of just len so that the span [va, va+len) is covered even if va is not page aligned. kenjis example: print("%p\n",ap); // 206cb0 ap = segattach(0, "shared", ap, 1024); print("%p\n",ap); // 206000 term% cat /proc/612768/segment Stack defff000 dffff000 1 Text R 1000 6000 1 Data 6000 7000 1 Bss 7000 7000 1 Shared 206000 207000 1 term% note that 0x206cb0 + 0x400 > 0x20700.
2014-09-13hgignore: ignore intermediate object files for amd64mischief