Ben Pfaff [Sat, 1 May 2010 18:20:14 +0000 (11:20 -0700)]
Make.config: Use a different method to detect --build-id support.
Some versions of ld accept /dev/null as a valid input file. Others will
not. The latter versions will give false negatives for --buil-id support,
which breaks linking of Pintos userspace programs. So use a different
method, that I hope will be more reliable, to detect --build-id support.
Ben Pfaff [Tue, 20 Jan 2009 06:32:57 +0000 (22:32 -0800)]
Remove unnecessary optimization barrier.
The compiler can't optimize out the load of "ticks" here because
it can't look into intr_disable() and intr_set_level() and know that
they don't modify "ticks".
Thanks to Martin <mfleener@stanford.edu> for pointing this out.
Ben Pfaff [Thu, 4 Dec 2008 05:56:59 +0000 (21:56 -0800)]
Avoid long pauses on serial timeout on boot on physical hardware.
The Pintos loader writes status to the serial port as well as the
VGA console, but this doesn't work out so well on at least some
real hardware when nothing is connected to the serial port: each
character can take a second or so to display because the BIOS
waits for a serial timeout each time. So, on the first serial
timeout, replace the "int $0x14" call by a pair of no-ops.
The rest of the changes are part of the struggle not to exceed
the maximum loader size.
Ben Pfaff [Thu, 4 Dec 2008 05:42:42 +0000 (21:42 -0800)]
Remove MIT copyright notice and license.
Pintos used to contain a loader and I/O functions derived from MIT
code, but this has now been entirely eliminated, so there is no
longer any reason to retain the MIT copyright notice or license.
Ben Pfaff [Thu, 4 Dec 2008 05:41:18 +0000 (21:41 -0800)]
Rewrite the I/O port code.
The contents of these functions was derived from code used in the
Massachusetts Institute of Technology's 6.828 advanced operating
systems course.
I deleted the contents of these functions and then rewrote them from
scratch without reference to the earlier code, working only from the
function comments (which I wrote earlier).
Godmar Back [Fri, 14 Nov 2008 06:13:54 +0000 (01:13 -0500)]
added section "Accessing User Memory", including explanation of why
pinning is necessary
added FAQ for why stack growth may cause page faults above stack pointer
minor edits to other sections
Godmar Back [Thu, 13 Nov 2008 02:17:21 +0000 (21:17 -0500)]
added btthreadall to dump all threads
added loadusersymbols to load user symbols from file
updated documentation to reflect behavior of qemu's and bochs's gdbstubs
Ben Pfaff [Wed, 12 Nov 2008 06:19:01 +0000 (22:19 -0800)]
Implement a proper block layer with partition support.
This is in preparation for introducing new block devices, in
particular USB storage-based block devices so that Pintos can boot
from USB memory sticks on notebook and desktop PCs.
This block layer was inspired by one from Anthony Romano
<chz@vt.edu> but it has been extensively (perhaps entirely) rewritten.
Thus, bugs must certainly be blamed on the committer.
Ben Pfaff [Mon, 10 Nov 2008 00:19:48 +0000 (16:19 -0800)]
Get rid of power_off_when_done global variable.
This global variable was not named according to the convention that a
global variable name start with its module name. Furthermore, its usage
was somewhat scattered across the source tree.
This commit introduces new functions shutdown() and shutdown_configure()
to improve the situation.
Ben Pfaff [Sun, 9 Nov 2008 23:21:21 +0000 (15:21 -0800)]
Allow Bochs users to reboot by clicking the "user" button.
The "user_shortcut" Bochs option allows specifying a key combination to
send to the VM when the user clicks on the "user" button in the Bochs
headerbar.
From Godmar, crossported from his usb-integration-aug08 branch.
Ben Pfaff [Sun, 9 Nov 2008 23:22:25 +0000 (15:22 -0800)]
Use 9600 bps for Pintos serial, to match the speed used by the loader.
It is important that Pintos and its loader use the same serial speed, so
that a terminal program connected to a serial port can be set to a sane
speed. The ideal choice would be 115200 bps, for maximum speed, but the
Pintos loader uses the BIOS to do serial output, and the BIOS supports a
maximum speed of 9600 bps.
From Godmar, crossported from his usb-integration-aug08 branch.
Ben Pfaff [Fri, 7 Nov 2008 05:54:04 +0000 (21:54 -0800)]
Eliminate user_page_limit global symbol.
The name "user_page_limit" did not follow the naming convention, which
stated that its name should start with palloc_ since it is defined in
palloc.c. But it was only used in one function, so it was better off
as a function parameter anyhow.
Godmar Back [Wed, 27 Aug 2008 14:34:24 +0000 (14:34 +0000)]
removed 'address' option for Bochs.
It makes Bochs > 2.2.6 fail with "[MEM0 ] ROM: System BIOS must end at 0xfffff"
and, according to http://www.nabble.com/Strange-error-message-when-bringing-up-a-CVS-build-td7532679.html
isn't even necessary for 2.2.6
Ben Pfaff [Thu, 21 Aug 2008 04:49:45 +0000 (04:49 +0000)]
Use --build-id=none to avoid build-id sections on FC8.
These build-id sections cause the Pintos ELF loader to reject
binaries. The preferred way to eliminate them would be to add
/DISCARD/ : { *(.note.gnu.build-id) }
to the linker script, but (as reported by Godmar Back) this causes a
segmentation fault in ld, as reported in a bug filed at:
http://sourceware.org/bugzilla/show_bug.cgi?id=5025
Ben Pfaff [Sat, 26 Jan 2008 16:43:15 +0000 (16:43 +0000)]
Use -fno-stack-protector with GCC versions that support it, to fix a
linker error on platform on which -fstack-protector is default, such
as recent versions of Ubuntu.
Godmar Back [Wed, 9 Jan 2008 19:48:05 +0000 (19:48 +0000)]
- moved all instructions that related to local CVS/group setup in localcvsinstructions.texi
- added variables recommendsourceforge, recommendvnc, and recommendcygwin to include/exclude
recommendations to use sourceforge, VNC, and Cygwin, resp.
Godmar Back [Sat, 17 Nov 2007 09:42:26 +0000 (09:42 +0000)]
- add localsettings.texi which contains Stanford-local macros and variables
- threads.texi - removed comment about being welcome to implement priority donation for semaphores
- vm.texi - added FAQ about how to resume. It truely is a FAQ, at least here at Tech.
- debug.texi - updated Bochs build instructions
Ben Pfaff [Mon, 23 Apr 2007 00:05:33 +0000 (00:05 +0000)]
Correctly initialize the esp0 pointer in the TSS for the initial
kernel thread. Shouldn't actually matter in practice, because that
pointer is only used on a user->kernel transition, and the initial
kernel thread never runs a user process.