the problem that the parent partition was still referenced in some cases.
* Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23172 a95241bf-73f2-0310-859d-f6bbb57e9c96
and it's checked if a chunk is already in the free list, and if any chunk
has an invalid size. It's defined for now.
* Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23171 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Insert the pause op in all spin wait loops (as macro for platform independent sources or as inline assembly on x86 only files)
* Fix some warnings with tracing on and extended some output
* Minor cleanups here and there
The pause instruction is implemented since P4 systems but is fully backwards compatible (it's a no-op prior to P4). According to Intel specs it reduces performance penalties as memory order violations can be avoided. Also power consumption is reduced. Most of all this will be beneficial to hyper-threading systems as it frees resources to the other logical processor when one logical processor executes a fast spinning loop.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23141 a95241bf-73f2-0310-859d-f6bbb57e9c96
* ACPI is evaluated first as it also handles things like multi core or hyper threading setups
* Removed other (disabled) hyper threading code per the notes in the corresponding ToDo
* Limit the detected CPU count to 2 for now as I wasn't able to get it working in either emulation nor real hardware with more than 2 CPUs
* Added a reserved byte to the mp_config_table struct, it worked only by luck as the compiler did padding there to get to the same size
I can now boot my Core 2 Quad with two out of four processors active :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23100 a95241bf-73f2-0310-859d-f6bbb57e9c96
passes that information on to the kernel. This should fix wrong bytes per row with
certain resolutions and graphics cards.
* The boot loader now recognizes 15 bit modes that are advertised as 16 bit modes.
This should fix wrong colors in 16 bit modes on some cards.
* Reenabled setting MTRR for VESA mode - don't remember why I disabled it, but it
works fine on my test machines.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23006 a95241bf-73f2-0310-859d-f6bbb57e9c96
serial output, and puts it into the new kernel_args::debug_output field.
* syslog_init() will now check if there is anything in kernel_args::debug_output
and will put that into the syslog buffer.
* dump_block() now also prints an offset.
* Fixed warning in mmu.cpp.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23003 a95241bf-73f2-0310-859d-f6bbb57e9c96
does no longer give partitioning systems precedence over file systems.
The one with the greater identification priority wins. ATM, if a file
system wins, we still mount the first file system that recognized the
partition at all, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22446 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Changed ResAttr rule to allow not deleting the file before writing the
attributes.
* Added application signatures for the runtime_loader and zbeos, just so that
they may have an icon, too (hint, hint) :-)
* As a side effect, this also let's FileTypes handle these two as apps (even
though they aren't), so that I can close bug #606.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22412 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Images preloaded by the boot loader had to be modules to be of any use
to the kernel. Extended the mechanism so that any images not accepted
by the module code would later be tried to be added as drivers by the
devfs. This is a little hacky ATM, since the devfs manages the drivers
using a hash map keyed by the drivers inode ID, which those drivers
obviously don't have.
* The devfs emulates read_pages() using read(), if the device driver
doesn't implement the former (all old-style drivers), thus making it
possible to BFS, which uses the file cache which in turn requires
read_pages(), on the device. write_pages() emulation is still missing.
* Replaced the kernel_args::boot_disk structure by a KMessage, which can
more flexibly be extended and deals more gracefully with
arbitrarily-size data. The disk_identifier structure still exists,
though. It is added as message field in cases where needed (non net
boot). Moved the boot_drive_number field of the bios_ia32 platform
specific args into the message.
* Made the stage 1 PXE boot loader superfluous. Moved the relevant
initialization code into the stage 2 loader, which can now be loaded
directly via PXE.
* The PXE boot loader does now download a boot tgz archive via TFTP. It
does no longer use the RemoteDisk protocol (it could actually be
removed from the boot loader). It also parses the DHCP options in the
DHCPACK packet provided by PXE and extracts the root path to be
mounted by the kernel.
* Reorganized the boot volume search in the kernel (vfs_boot.cpp) and
added support for network boot. In this case the net stack is
initialized and the network interface the boot loader used is brought
up and configured. Since NBD and RemoteDisk are our only options for
net boot (and those aren't really configurable dynamically) ATM, the
the boot device is found automatically by the disk device manager.
Booting via PXE does work to some degree now. The most grievous problem
is that loading certain drivers or kernel modules (or related activity)
causes a reboot (likely a triple fault, though one wonders where our
double fault handler is on vacation). Namely the keyboard and mouse input
server add-ons need to be deactivated as well as the media server.
A smaller problem is the net server, which apparently tries to
(re-)configure the network interface we're using to boot, which
obviously doesn't work out that well. So, if all this stuff is disabled
Haiku does fully boot, when using the RemoteDisk protocol (not being
able to use keyboard or mouse doesn't make this a particular fascinating
experience, though ;-)). I had no luck with NBD -- it seemed to have
protocol problems with the servers I tried.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21611 a95241bf-73f2-0310-859d-f6bbb57e9c96
they have been mapped. The previous method relied on their physical
pages living in the identity mapped region, which they wouldn't, when
the boot loader allocated enough memory before.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21610 a95241bf-73f2-0310-859d-f6bbb57e9c96
32 MB the kernel's VM initialization code would run into trouble.
Accessing freshly mapped memory in the generic page mapper would
result in a page fault. To be investigated.
* Apparently in the boot loader the file systems are responsible for
resolving symbolic links (instead of the VFS). We do that now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21608 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Prepared for other uses than just boot floppies (/CDs). We first try to
inflate the contents of the given device at offset 0 before using the
floppy disk offset. This will make it easy to mount tgz files loaded via
network or built into the boot loader itself.
* Increased the max possible size of inflated data to 32 MB.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21583 a95241bf-73f2-0310-859d-f6bbb57e9c96
The solution is less than optimal, but should work for now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20722 a95241bf-73f2-0310-859d-f6bbb57e9c96
does. Marcus, what problem did you encounter?
The BuildPXEstage1 actions use "as" ATM, which is not correct, since it
should actually use the target platform assembler (i.e.
cross-compilation won't work). It should be replaced by $(TARGET_CC),
but that results in the following errors, when compiling with gcc 2.95.3:
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:
Assembler messages:
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:39:
Error: missing ')'
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:96:
Error: `0x6(%edx)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:102:
Error: `0xa(%edx)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:127:
Error: `2(%edx)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:128:
Error: `0(%edx)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:147:
Error: `16(%ebx)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:149:
Error: `20(%ebx)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:173:
Error: `2(%edx)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:174:
Error: `0(%edx)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:298:
Error: `(%esi)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:299:
Error: `(%edi)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:306:
Error: `(%esi)' is not a valid 16 bit base/index expression
/home/bonefish/develop/haiku/haiku/src/system/boot/platform/pxe_ia32/pxe_stage1.S:307:
Error: `(%edi)' is not a valid 16 bit base/index expression
For the gcc 4 configuration all but the first errors disappear. It looks
like these are bugs in older assembler version. Any reasonable
work-around?
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20043 a95241bf-73f2-0310-859d-f6bbb57e9c96
in addr_range.h to add ranges to the arrays. This fixes the crashing bug reported
by Larry Baydak.
* Added some more exported functions to kernel_args.cpp (prototypes are in addr_range.h).
* TODO: let the PPC/OpenFirmware implementation use those as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19739 a95241bf-73f2-0310-859d-f6bbb57e9c96
You can build it using:
TARGET_BOOT_PLATFORM=pxe_ia32 jam pxehaiku-loader
Building the PXE stage1 using:
TARGET_BOOT_PLATFORM=pxe_ia32 jam pxehaiku
is still broken. however, it can be build using:
cd src/system/boot/platform/pxe_ia32/
as -o pxe_stage1.o pxe_stage1.S
ld --oformat binary --Ttext 0x7C00 -o pxe_stage1.bin pxe_stage1.o
cp pxe_stage1.bin /tftpboot/pxehaiku
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19722 a95241bf-73f2-0310-859d-f6bbb57e9c96
EDID info from the monitor if available through VESA/DDC.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19588 a95241bf-73f2-0310-859d-f6bbb57e9c96
info to the serial line - not tested yet (as Qemu doesn't support DDC/EDID).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19580 a95241bf-73f2-0310-859d-f6bbb57e9c96
pretty close, and the number of loaded modules have a direct influence on
this (even though we're currently loading the symbols by default).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19320 a95241bf-73f2-0310-859d-f6bbb57e9c96
This allowes to actually execute the boot loader now.
Need to use Ingo's remote_disk_server now for booting.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19113 a95241bf-73f2-0310-859d-f6bbb57e9c96
offset was not changed correctly either: the order in which the
expression was evaluated was undefined; in fact, GCC 2.95.3 would use
the same buffer[index] twice.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19060 a95241bf-73f2-0310-859d-f6bbb57e9c96
Executing the stage2 loader works now, up to the point where mmu_init() reuses the same address space.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19033 a95241bf-73f2-0310-859d-f6bbb57e9c96
stuff of the boot loader to help with bug #238.
* Minor cleanup (added license headers, fixed debug output)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18977 a95241bf-73f2-0310-859d-f6bbb57e9c96
Fixed the build of most of targets using these rules. Though the build can be still broken, feel free to fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18521 a95241bf-73f2-0310-859d-f6bbb57e9c96
boot volume. The other (better) methods are now disabled in the boot loader.
This fixes bug #241.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16895 a95241bf-73f2-0310-859d-f6bbb57e9c96
information to identify the boot volume - if we want to be able to map all BIOS
drive IDs to the disks in the system, we need to do this always, though.
* Forgot to commit the updated disk_identifier.h in the last commit...
* Removed the unused dumpBlock() function from devices.cpp.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16892 a95241bf-73f2-0310-859d-f6bbb57e9c96
in order to differentiate boot disks. The kernel still ignores this wisdom, though,
bug #241 still remains open.
This currently only works correctly if the boot menu is opened, anyway.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16891 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Adapt other sources where needed (the boot loader's RootFileSystem still
used the old implementation).
* Implemented RootFileSystem::Rewind().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16889 a95241bf-73f2-0310-859d-f6bbb57e9c96
before another one in the list.
* The video modes in the boot loader are now sorted (by resolution, larger
resolution comes first). Doubled entries are automatically removed; this
fixes bug #192.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16572 a95241bf-73f2-0310-859d-f6bbb57e9c96
on at least one of my systems, it only works on 3 of them...).
* Added APM safemode setting.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16152 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Moved the Open Firmware function platform_get_next_device() from
the boot loader into the kernel (renamed to of_get_next_device()).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16101 a95241bf-73f2-0310-859d-f6bbb57e9c96
We don't do anything with it yet, though, so the BIOS will probably ignore us since
we are supposed to poll for events.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15900 a95241bf-73f2-0310-859d-f6bbb57e9c96
and 24 bits the set upper bits were overwriting the upper bits of
the word at the target location (usually something like a branch
instruction).
This is the kind of bug that easily take six hours to find, especially
when working with interrupt code and being convinced that the problem
must be related.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15879 a95241bf-73f2-0310-859d-f6bbb57e9c96
device in the Open Firmware implementation of boot loader and
pass its path to the kernel, where it's opened and used for
getting/setting the real time. The expensive atomic_*64() on PPC
32-bit make things a bit more complicated. Moreover, missing
64 bit multiplication and division instructions won't really
allow system_time() to be anywhere near as fast as on x86. :-/
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15837 a95241bf-73f2-0310-859d-f6bbb57e9c96
bus, and time base frequency) in the PPC boot loader, and propagate
them to the kernel via kernel_args.
* Now we use the correct time base frequency for timer calculations.
* Implemented PPC specific system info stuff. Added a few PPC CPU
types to <OS.h>.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15817 a95241bf-73f2-0310-859d-f6bbb57e9c96
According to the spec we need to set it before taking over the MMU,
but we can't call it before arch_mmu_init(), since we need the OF
to allocate the page table. So we do it after we have allocated
the new page table.
* Added PPC specific kernel_args: The virtual address ranges we want
to keep in the kernel. We fill that in with the translations we
find when initializing the MMU stuff. We remove the memory the
boot loader occupies from those. Besides the stack for the boot
loader only the OF stuff remains.
* arch_mmu_allocate() now starts to search at KERNEL_BASE for a free
virtual address when no particular address is requested. This saves
us further trouble in the kernel, since those allocations would
need to be remapped otherwise.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15780 a95241bf-73f2-0310-859d-f6bbb57e9c96
arch_mmu_allocate() to set the "cache inhibited" flag. One negative
effect was that for such memory the lwarx instruction (used by the
atomic_*() functions) does "... cause the system data storage error
handle to be invoked...", as the architecture specification puts it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15759 a95241bf-73f2-0310-859d-f6bbb57e9c96
{HAIKU,HOST,TARGET}_KERNEL_PIC_{CC,LINK}FLAGS which define the
compiler/linker flags specifying the kind of position independence
the kernel shall have. For x86 we had and still have -fno-pic, but the
PPC kernel has -fPIE (position independent executable) now, as we
need to relocate it.
* The boot loader relocates the kernel now. Mostly copied the relocation
code from the kernel ELF loader. Almost completely rewrote the PPC
specific relocation code, though. It's more correct and more complete now
(some things are still missing though).
* Added boot platform awareness to the kernel. Moved the generic
Open Firmware code (openfirmware.c/h) from the boot loader to the kernel.
* The kernel PPC serial debug output is sent to the console for the time
being.
* The PPC boot loader counts the CPUs now and allocates the kernel stacks
(made OF device iteration a bit more flexible on the way -- the search
can be restricted to subtree). Furthermore we really enter the kernel...
(Yay! :-) ... and crash in the first dprintf() (in the atomic_set()
called by acquire_spinlock()). kprintf() works, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15756 a95241bf-73f2-0310-859d-f6bbb57e9c96
specifying whether only the exact supplied address is acceptable. If
false, the address is considered a hint only. It will be picked, if
available, otherwise a greater address is tried to be acquired, and
as last resort any address. This feature is only implemented for PPC.
It is needed since the preferred kernel text base address 0x80000000
might not be available (and actually isn't on my Mac mini).
* Fixed a bug in the PPC memory management code:
is_{virtual,physical}_allocated() were checking whether the given
range was completely contained by an existing range instead of
checking for intersection. As a consequence we could (and did) allocate
a range intersecting with already allocated ranges. The kernel segment
thus overwrote OF memory for instance.
* The ELF loader makes sure that it got both text and data segment of
the image to be loaded.
The PPC boot loader successfully loads kernel and modules now. Next
comes the hard part, I'm afraid.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15708 a95241bf-73f2-0310-859d-f6bbb57e9c96
platform_allocation_region(). Since the callback stuff doesn't seem to
work, the Open Firmware didn't ask us to allocate memory in turn, and
thus we didn't know about the range that had been mapped and reused it
later.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15699 a95241bf-73f2-0310-859d-f6bbb57e9c96
IP, and UDP, as well as a home brewn UDP based protocol, "remote disk",
which provides random access to a single remote file/device. The Open
Firmware flavored boot loader automatically initializes the net stack,
searches for a remote disk, and tries to boot from it, if the boot
device is a network device (e.g. when loading the boot loader via
TFTP).
This is quite nice for developing with a two-machine setup, since one
doesn't even need to install Haiku on the test machine anymore, but can
serve it directly from the development machine. When the networking
support in the kernel is working, this method could even be used to
fully boot, not just for loading kernel and initial modules.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15689 a95241bf-73f2-0310-859d-f6bbb57e9c96
argument value of 0 should only free the old allocation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15688 a95241bf-73f2-0310-859d-f6bbb57e9c96
* bfs_inode must be packed, otherwise the structure is larger due to
different alignment requirements.
* The off_t array returned by bfs_inode::Values() is in on-disk
endianess. This was ignored in some places. Hope I squashed all
occurences.
Those fixes should probably be back-ported to the kernel add-on, too.
Will do that when I get to that point in the kernel, unless someone
beats me to it.
The PPC boot loader does at least find the kernel on a BFS volume now.
Haven't dared to let it be loaded yet.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15686 a95241bf-73f2-0310-859d-f6bbb57e9c96
of_call_method() which is actually an implementation of the
"call-method" client function.
* of_interpret() announced one less return value than actually needed.
Seemed to work anyway, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15683 a95241bf-73f2-0310-859d-f6bbb57e9c96
menu. The menu basically works, but has a couple of problems. The
harmless ones are graphical: we get cursor artifacts when the colors
are changed, and the item selection doesn't quite look as it should.
More serious is the lack of Home/End, Page Up/Down keys. All I read from
the console is a '\0' byte when such a key is pressed. The cursor keys
work fortunately. I mapped the functionality of Page Up/Down
additionally to the Left/Right cursor keys. So the menu should be usable
at least. I guess, I'll leave it in that state; Axel wants a graphical
menu anyway.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15589 a95241bf-73f2-0310-859d-f6bbb57e9c96
* The boot loader now checks the CPU for the cpuid and rdtsc features, which we
currently both rely on.
* Removed old and no longer used stage2_priv.h header
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15534 a95241bf-73f2-0310-859d-f6bbb57e9c96
Each component is built in the respective subdirectory now
and no longer in src/system/Jamfile.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15184 a95241bf-73f2-0310-859d-f6bbb57e9c96
space inbetween. The segments can be in inverse order now, too.
The same should be done in the kernel, too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14907 a95241bf-73f2-0310-859d-f6bbb57e9c96
categories:
* Missing includes (like <stdlib.h> and <string.h>).
* Linking against $(TARGET_LIBSTDC++) instead of libstdc++.r4.so.
* Local variables shadowing parameters.
* Default parameters in function definitions (as opposed to function
declarations).
* All C++ stuff (nothrow, map, set, vector, min, max,...) must be imported
explicitly from the std:: namespace now.
* "new (sometype)[...]" must read "new sometype[...]", even if sometype is
something like "const char *".
* __FUNCTION__ is no longer a string literal (but a string expression), i.e.
'printf(__FUNCTION__ ": ...\n")' is invalid code.
* A type cast results in a non-lvalue. E.g. "(char *)buffer += bytes"
is an invalid expression.
* "friend class SomeClass" only works when SomeClass is known before.
Otherwise the an inner class with that name is considered as friend.
gcc 4 is much pickier about scopes.
* gcc 4 is generally stricter with respect to type conversions in C.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14878 a95241bf-73f2-0310-859d-f6bbb57e9c96
* there is now a "Disable Hyper-Threading" safemode in the boot loader
* the SMP & HT menu items are now added in smp.cpp - and are only added
if the system supports one of them.
* more cleanup to smp_apic.h
* removed cpuid() from the boot loader's support.S - instead, it will now
use the one from the kernel.
* added a very weak HT detection: if the MP config only listed one CPU,
and this CPU supports HT, we enable the other logic processor manually -
as this currently doesn't work, it's disabled, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14536 a95241bf-73f2-0310-859d-f6bbb57e9c96
part of the base table, not the extended table.
Renamed some structure fields, variables to be clearer and nicer to read.
Removed some unused stuff.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14502 a95241bf-73f2-0310-859d-f6bbb57e9c96
your system, I've also added a "Disable SMP" safemode option. The NO_SMP
define is still there, and will be removed once SMP works flawlessly.
Prints out infos about the interrupt entries in the MP config.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14499 a95241bf-73f2-0310-859d-f6bbb57e9c96
for extended drive parameters.
This should fix eventual "no boot disk" messages of the boot loader.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14435 a95241bf-73f2-0310-859d-f6bbb57e9c96
Haiku disk installed, you can now choose between them in the boot loader.
Also fixed build - obviously forgot to compile before a last minute change...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14404 a95241bf-73f2-0310-859d-f6bbb57e9c96
the boot process. Will experiment with larger sizes later (24k is the current
limit, due to the memory layout used by the platform dependent code).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14402 a95241bf-73f2-0310-859d-f6bbb57e9c96
is still the CD-ROM.
BIOSDrive::ReadAt() now tries to read a specific block up to 3 times before
failing - after the second retry, it will also reset the disk system.
get_ext_drive_parameters() will now fail if the BIOS fills in the device_parameters
structure incorrectly (just tested some values against zero, that at least helps
in the case of one of my systems).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14401 a95241bf-73f2-0310-859d-f6bbb57e9c96
functions - it no longer terminates the CD-ROM emulation, but only checks the status,
and therefore, it's now called by platform_register_boot_device() instead of from
platform_start_kernel().
This also makes the devices.h header useless.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14390 a95241bf-73f2-0310-859d-f6bbb57e9c96
in the adequate field in the kernel_args structure.
Renamed gCDFloppyBoot variable to gBootedFromImage (as network boot should look
similar).
The "kernel_args.boot_disk.cd" field is now maintained as well.
The print_item_at() menu function now prints the Menu::ChoiceText() instead
of that of its marked item.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14389 a95241bf-73f2-0310-859d-f6bbb57e9c96
"booted_from_image" in the kernel_args' boot_disk structure.
Also, added fields "cd" and "user_selected".
A CHOICE_MENU menu can now have a choice text - this is automatically updated
as entries in the menu get selected.
The boot volume menu now has the initial choice text "CD-ROM or hard drive"
in case the boot loader was loaded from an image. The "Rescan volumes" item
is no longer selected by default (only if there was no boot volume found) - but
it's still functionless anyway.
The TAR fs will now appear as "Boot from CD-ROM" in the boot volume menu.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14388 a95241bf-73f2-0310-859d-f6bbb57e9c96
loader will now respect the selection made by the boot image creator, and
just load every file system there is on that image.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14381 a95241bf-73f2-0310-859d-f6bbb57e9c96
like floppy or CD boot.
This allows it to reduce the number of scans needed to identify the boot
partition - when booted from a real floppy, this speeds up the boot
process by a magnitude.
Also, the loader now has a fall back in case there were no "boot" links
on the disk - the current boot floppy script doesn't create them.
With these changes, I was able to boot into a HD based Haiku installation
from a floppy disk. It's not yet enough to boot from CD (as the boot
device selection is a bit too simplistic right now), but it will eventually
come next. Testing is a lot slower here, though, as neither qemu nor
Bochs support multi-session CDs (at least I have no idea how to get them
to do this).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14380 a95241bf-73f2-0310-859d-f6bbb57e9c96
have an effect on floppies or CD-ROMs, but would have on real hard drives that require
CHS access.
Changed the cylinder-to-regs conversion in BIOSDrive::ReadAt() (that one was actually
correct) to make it look similar to the conversion in the opposite direction in
get_drive_parameters().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14377 a95241bf-73f2-0310-859d-f6bbb57e9c96
Renamed TarFS::Node to TarFS::File to correctly name the class hierarchy.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14376 a95241bf-73f2-0310-859d-f6bbb57e9c96
Implemented CHS support needed for smaller hard drives, CD-ROM, ...
Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14369 a95241bf-73f2-0310-859d-f6bbb57e9c96
Also, freeing regions is now supported (but still only the last allocated region can be
freed, as that's currently good enough).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14366 a95241bf-73f2-0310-859d-f6bbb57e9c96
Note, this value should be patched by the build system to the actual size
of zbeos - but since we don't have this mechanism in place yet, the maximum
value is probably the best default, even if it should slow down a floppy
boot considerably.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14344 a95241bf-73f2-0310-859d-f6bbb57e9c96
It expects the zipped TAR at offset 192 kB on the boot image.
This work was mostly done by Ingo during BeGeistert.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14343 a95241bf-73f2-0310-859d-f6bbb57e9c96
evaluated, so that you can specify something different than 8 bit in there.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12840 a95241bf-73f2-0310-859d-f6bbb57e9c96
For some reason, the colors are wrong for anything but 8bit modes, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12823 a95241bf-73f2-0310-859d-f6bbb57e9c96
After all, there might be real graphics card which behave the same??
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12551 a95241bf-73f2-0310-859d-f6bbb57e9c96
If anything is still broken (and was not before :)), please shout.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12361 a95241bf-73f2-0310-859d-f6bbb57e9c96