Commit Graph

746 Commits

Author SHA1 Message Date
Ingo Weinhold
84e9db7fb7 x86 mmu_init(): Sum up the physical memory we ignore for whatever reason --
stored in kernel_args::ignored_physical_memory.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37116 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-12 15:57:21 +00:00
Travis Geiselbrecht
9623c48284 SMP: remove the tracking of apic id -> cpu id. Don't pass between bootloader and kernel.
Kernel doesn't use it, and it could be regenerated in the kernel if it did need it.

This also unlocks the apic range the bios can use. Previously the apic ids would have
to fit within 0..MAX_CPUS or it'd reject the cpu. Some boxes (mine in particular)
seem to sparsely populate the apic id so that the range is pretty large.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37108 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-12 01:01:54 +00:00
Ingo Weinhold
977ffe5233 No longer ignore the physical memory beyond 4 GB, if we have a 64 bit
phys_addr_t. IOW, if PAE is enabled, that memory should be put to use now.
Apparently we report an incorrect amount of total memory (also counting
memory gaps), which also suggests that we need another method to manage the
vm_page structures (currently a huge array with indexes proportional to
physical page addresses, i.e. wasting memory for the gaps).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37107 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-12 00:36:44 +00:00
Axel Dörfler
db3aa13aaf * Patch by Andreas Färber that removes unneeded includes, mostly ones that don't
even have to be available in the generic case. See bug #6105, patch 1 & 2.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37007 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-04 08:03:02 +00:00
Ingo Weinhold
1d578e15fe Fixed more address types related issues. Mostly printf() or comparison
warnings, but also some oversights from earlier changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37000 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-02 20:46:49 +00:00
Ingo Weinhold
e5846dfa61 Added shared sort_[physical_]address_ranges() to avoid code duplication. Also
fixes the m68k build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36951 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-05-27 17:08:47 +00:00
Ingo Weinhold
d73ddac5bf * Introduced phys_addr_range type, an equivalent to addr_range for physical
address ranges, and a set of support functions working with it.
* Changed the type of the kernel_args physical address range arrays to
  phys_addr_range and adjusted the code working with those.
* Removed a bunch of duplicated address range code in the PPC's mmu.cpp.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36947 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-05-27 11:50:40 +00:00
Ingo Weinhold
3a5655a502 * Reverted r34863.
* Don't keep any memory mappings from the OF for the time being. We can't
  keep mappings < 2 GB, since those aren't in the kernel address space and
  we don't handle memory mapped registers or the like correctly either.
Ticket #5193.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36886 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-05-21 15:33:28 +00:00
Travis Geiselbrecht
53d7472637 BOOT SMP: allow systems with a large number of cpus and/or sparse apic ids to actually boot
The old mechanism to route an apic id back to a cpu id is faulty, built with the assumption that
the bios will 'pack' the apic ids from 0-num_cpus. In systems that dont do that, the code would
randomly corrupt the bootloader. Fatal in this case.

This quick fix simply rejects all apic ids >= MAX_CPUS (8). No way it would have worked before
if you had a box that started with >= 8 or anything, so it shouldn't regress any existing system.

Better solution is to allow any apic id to exist (0-255).

On this particular box the ids (from lunix dmesg):
SRAT: PXM 0 -> APIC 0 -> Node 0
SRAT: PXM 1 -> APIC 16 -> Node 1
SRAT: PXM 0 -> APIC 2 -> Node 0
SRAT: PXM 0 -> APIC 4 -> Node 0
SRAT: PXM 0 -> APIC 6 -> Node 0
SRAT: PXM 1 -> APIC 18 -> Node 1
SRAT: PXM 1 -> APIC 20 -> Node 1
SRAT: PXM 1 -> APIC 22 -> Node 1
SRAT: PXM 0 -> APIC 1 -> Node 0
SRAT: PXM 0 -> APIC 3 -> Node 0
SRAT: PXM 0 -> APIC 5 -> Node 0
SRAT: PXM 0 -> APIC 7 -> Node 0
SRAT: PXM 1 -> APIC 17 -> Node 1
SRAT: PXM 1 -> APIC 19 -> Node 1
SRAT: PXM 1 -> APIC 21 -> Node 1
SRAT: PXM 1 -> APIC 23 -> Node 1



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36836 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-05-17 03:47:24 +00:00
Ingo Weinhold
8588e7fc6f Fixed broken mmu_allocate_physical():
* Now it checks whether the given physical range exists at all.
* Not only check whether any range of the given size is free, but also check
  whether the given range is free.
* B_BAD_VALUE is not a particularly good return value for a function supposed
  to return a bool

Fixes #5911. With only 64 MB RAM the usual debug syslog buffer location may
be outside the actually existing physical memory.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36632 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-05-05 21:15:33 +00:00
Ingo Weinhold
863c623f9a Added is_address_range_covered(), returning whether the given address range
is fully covered by the ranges in the array.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36631 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-05-05 21:09:11 +00:00
Ingo Weinhold
c4697c01a9 Patch by Andreas Faerber: Implemented fallbacks (e801 and 88) to get the
memory map in case e820 is not supported by the BIOS.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36595 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-05-03 13:15:18 +00:00
Ingo Weinhold
bfb3b117eb mmu_init(): In case we couldn't get a memory map from the BIOS the fixed
memory setup was 1 MiB larger than advertised.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36581 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-05-02 12:56:40 +00:00
Axel Dörfler
e3ce6e4be5 * Added warm reboot functionality based on a patch by Grey, thanks! It can be
invoked using the 'w' key.
* Checking allocations doesn't hurt.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36311 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-15 18:10:00 +00:00
Axel Dörfler
868aa7a0e0 * Added shortcut handling to the boot loader menu (in preparation of adopting
ticket #5312).
* Added shortcut 'b' to continue booting, 'r' to reboot.
* Consolidated asterisk style.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36310 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-15 18:07:40 +00:00
Axel Dörfler
024bc08b2f * Fixed warning.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36302 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-15 15:51:47 +00:00
Axel Dörfler
fba2ee2527 * We should check for the I/O APIC before mapping it (since we panic if mapping
it failed...).
* Moved IRQ table reading much earlier (before starting to program the I/O
  APIC), though it currently fails, possibly because the device manager isn't
  up yet, and there is no embedded controller driver.
* The kernel now enables I/O APICs by default, but the boot loader disables
  them - you can now enable them using the safe mode menu, but it currently
  won't have any (positive) effect.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36293 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-15 13:54:15 +00:00
Axel Dörfler
a1b2e9e959 * Removed F8 and F12 keys again, see comments to bug #5163.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36233 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-13 18:25:56 +00:00
Michael Lotz
3d310bd5f4 * Fix build, the APIC definitions are used in the bootloader too.
* Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36189 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-12 15:59:40 +00:00
Ingo Weinhold
25bca18888 Moved setting the debug syslog default to main(). Previously that was done
only when the boot loader menu was entered.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35977 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-27 18:15:17 +00:00
Stefano Ceccherini
43e738bd36 Style fixes
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35897 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-18 06:31:01 +00:00
Stefano Ceccherini
33e11f7c0f Squashed todo: only compute the numEntries once, and made it static.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35889 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-17 12:19:34 +00:00
Ingo Weinhold
38c7ed7c47 Added kernel debug config option KDEBUG_ENABLE_DEBUG_SYSLOG which determines
the default setting for the "debug syslog" feature (can still be overridden
in the boot loader). Per default enabled for kdebug level >= 1.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35884 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-16 19:39:22 +00:00
Ingo Weinhold
085cf27b40 * Added Directory::CreateFile() which can be implemented by file systems to
support file creation.
* Extended open() and open_from() to support O_CREAT to create files.
  open_from() has got an optional "permissions" parameter for that purpose.
* Fixed errno. It would crash when being used. Also changed the POSIX functions
  to return their error code via errno as expected.
* Added writev().
* FAT file system:
  - Added support for reading long file names.
  - Added support for creating files (8.3 name only) and writing to them.
  - Enabled scanning partitions with it.
* Boot loader menu:
  - Enabled the "Reboot" menu item unconditionally.
  - Added "Save syslog from previous session" menu item to the debug menu.
    Currently saving the syslog to FAT32 volumes is supported.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35882 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-16 17:29:58 +00:00
Ingo Weinhold
d1367a37cc Implemented BIOSDrive::WriteAt(). Currently it supports only LBA addressing
and requires position and size to be block-aligned.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35881 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-16 17:10:00 +00:00
Ingo Weinhold
6daecfb154 Ignore physical memory ranges that are smaller than 64 KB. Those don't
contribute significantly to the usable memory, but possibly make the MTRR
setup impossible. Might improve #5550.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35825 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-12 16:59:26 +00:00
Ingo Weinhold
6b110c63fd Postpone clearing the debug syslog buffer signature to the time when going
to start the kernel with the option disabled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35823 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-12 12:57:35 +00:00
Matt Madia
4a27232637 Fixes build for PXE NetBoot. Uncertain if additional changes are needed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35818 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-11 20:15:39 +00:00
Ingo Weinhold
8d25a30c3f Changed the location for the debug syslog buffer from 16 MB to 63 MB. On my
machine the previous location was overwritten, probably by GRUB.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35817 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-11 18:15:43 +00:00
Ingo Weinhold
28a2172c3f kernel:
* The kernel syslog ring buffer is no longer emptied by the syslog sender
  thread. Instead we only drop the oldest data from the buffer when we're
  writing to it and there's not enough free space in it.
  Advantages: We drop old data rather than the most recent data when the buffer
  is full. The "syslog" KDL command has more data available now. So the odds
  are that kernel syslog messages not written to disk yet are at least still
  in the kernel buffer.
* Changed dprintf_no_syslog() semantics: Now it writes to the syslog, but
  doesn't notify the syslog sender thread.

boot loader:
* Added the ring_buffer implementation and a dummy user_memcpy().
* bios_x86: Moved the syslog stuff from serial.{cpp,h} to debug.{cpp.h}.
* Moved the debug options from the "Select safe mode options" menu to a new
  "Select debug options" menu.
* Added option "Enable debug syslog" to the new menu (ATM available on x86
  only). It allocates a 1 MB in-memory buffer for the syslog for this session
  in such a way that it can be accessed by the boot loader after a reset.
* Added item "Display syslog from previous session" to the new menu, doing
  what its name suggests.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35816 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-11 17:46:36 +00:00
Ingo Weinhold
90bf6bef34 Added mmu_allocate_physical(), which allocates a specified physical memory
range.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35815 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-11 17:42:00 +00:00
Ingo Weinhold
bb7711cd5a Updated boot loader copyright year.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35814 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-11 17:13:12 +00:00
Ingo Weinhold
dd5f340aea A simple pager implemented on top of the generic text console interface.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35812 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-11 17:09:11 +00:00
Ingo Weinhold
5d1f3d53e2 get_next_physical_address(): Directly update the
gKernelArgs.physical_allocated_range array. This way it is always up to date
and we don't need to fix it in mmu_init_for_kernel().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35802 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-10 18:38:57 +00:00
Ingo Weinhold
73a72c42e2 Added get_free_address_range() to get a free range in a given range array.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35801 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-10 18:36:44 +00:00
Stefano Ceccherini
08876f2b96 Move the code which checks for disabled apic earlier (in the boot loader).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35741 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-03 19:14:42 +00:00
Ingo Weinhold
6dacf0502d Ignore physical memory below 1 MB. This is a work-around for buggy BIOSes
providing incorrect memory types. It doesn't cost us anything, since the
kernel reserves all but the unusable range later anyway. Should fix #1925.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35736 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-03 14:54:46 +00:00
Ingo Weinhold
d40a935560 Boot loader (x86 mmu.cpp):
* Made the page table allocation more flexible. Got rid of sMaxVirtualAddress
  and added new virtual_end address to the architecture specific kernel args.
* Increased the virtual space we reserve for the kernel to 16 MB. That
  should suffice for quite a while. The previous 2 MB were too tight when
  building the kernel with debug info.
* mmu_init(): The way we were translating the BIOS' extended memory map to
  our physical ranges arrays was broken. Small gaps between usable memory
  ranges would be ignored and instead marked allocated. This worked fine for
  the boot loader and during the early kernel initialization, but after the
  VM has been fully set up it frees all physical ranges that have not been
  claimed otherwise. So those ranges could be entered into the free pages
  list and would be used later. This could possibly cause all kinds of weird
  problems, probably including ACPI issues. Now we add only the actually
  usable ranges to our list.

Kernel:
* vm_page_init(): The pages of the ranges between the usable physical memory
  ranges are now marked PAGE_STATE_UNUSED, the allocated ranges
  PAGE_STATE_WIRED.
* unmap_and_free_physical_pages(): Don't free pages marked as unused.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35726 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-02 18:13:06 +00:00
Ingo Weinhold
c0d54ea244 Enabled serial output earlier.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35699 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-01 13:48:31 +00:00
Ingo Weinhold
dfa77fa65b Automatic whitespace cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35698 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-01 13:47:32 +00:00
Ingo Weinhold
e82b595ac6 * TRACE(()) -> TRACE()
* Fixed warnings with tracing enabled.
* Improved some debug output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35686 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-28 23:45:00 +00:00
Rene Gollent
b5db1a786f Patch by Matt Madia: fix ARM build.
Closes ticket #5476.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35618 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-25 18:49:45 +00:00
Axel Dörfler
63b69bec3c * Applied patch by Andreas Färber as part of #5319.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35522 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-19 16:44:55 +00:00
Axel Dörfler
599b988100 * Fixed coding style violation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35495 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-16 13:26:28 +00:00
Axel Dörfler
e190cae151 * Build fix (bfs_inode::InitCheck() is now const), and cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35494 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-16 12:49:52 +00:00
Stefano Ceccherini
7ae188c379 Patch by Grey which fixes "auto-enabling" of the boot loader screen debug
which happened on some systems (mine included).
Should close ticket #5341.
Thanks! 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35441 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-09 19:47:23 +00:00
Artur Wyszynski
cee04e8074 Fixed various errors/warnings reported by cppcheck:
* memory leaks
* resource leaks
* added const's to getters
* removed a few reundant conditions


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35433 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-08 22:50:38 +00:00
Stephan Aßmus
06f34bf2d8 Applied patch by "Grey":
Entering the boot loader menu has changed/simplified while reducing the boot time by .75 seconds.
Now it is enough to hold one of shift/Esc/F8/F12/Space. Thanks!

I've also updated the boot loader documentation to reflect the change, but I only mentioned holding shift.
I know that changing the documention directly is not preferred anymore, but I wanted to make sure this
patch is complete.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35050 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-13 15:02:55 +00:00
Stephan Aßmus
98664e52dd Patch by Andreas Färber:
* Fix the boot net stack's IPService to base the calculation payload size
   on the IP-indicated packet size instead of the Ethernet payload.

Thanks a lot! Fixes ticket #5234.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35016 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-11 20:50:06 +00:00
Ingo Weinhold
d756fcf644 acpi_check_rsdt(), acpi_find_table(): Unmap the mapped page again, if we
don't need it. That prevents us from ending up with the page being mapped
multiple times (under VMware at least) and thus fixes #5208.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34948 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-08 16:06:22 +00:00
Ingo Weinhold
7f051b5710 * Changed/fixed mmu_map_physical_memory() semantics: It does now always
allocate all pages the given range intersects with. When not page aligned
  it could fail to allocate the last page.
* mmu_free():
  - Adjusted semantics to be compatible with mmu_map_physical_memory().
  - The validity check was broken, because page number and addresses were
    mixed, and because KERNEL_BASE + kMaxKernelSize doesn't mark the end of
    the allocated virtual ranges.
  - The final check against sNextVirtualAddress was broken.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34947 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-08 15:58:08 +00:00
François Revol
12a17213b4 Undo r34942 and use printf instead, which is standardized by POSIX and supports \n, thanks DraX!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34943 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-07 23:31:12 +00:00
François Revol
08605557d3 Do not use echo -e, as FreeBSD doesn't support it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34942 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-07 23:03:19 +00:00
François Revol
c505b2765b Patch by Matt Madia: detect host sfdisk in configure for ARM, including the FreeBSD port.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34940 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-07 22:08:12 +00:00
François Revol
cecee6bb75 M is 1024*1024, dammit ! Has the US finally switched to the metric system ?
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34920 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-06 18:15:56 +00:00
Stephan Aßmus
9149b4aa35 Fixed line-endings.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34919 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-06 17:54:21 +00:00
Stephan Aßmus
7c5a2487c1 Patch by Andreas Faerber:
* Fixed coding style issues pointed out by Axel.
 * Fixed potential buffer overflow and fault in default-client-up code path
   (OF counts terminating zero char, too).
 * Added an intermediate fallback to parsing the boot path
 * Added himself to the copyright holders

Thanks a lot! Fixes ticket #5189.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34918 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-06 17:53:03 +00:00
François Revol
bc85c20bdd - add board-specific stuff to header paths,
- automatically download the u-boot flash image when set.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34917 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-06 17:47:54 +00:00
Axel Dörfler
e0d09e23a7 * Replaced parse_ip_address_component() with strtol() which is already
available in the boot loader.
* Simplified parse_ip_address() and use style conforming identifiers.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34870 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-03 13:33:20 +00:00
François Revol
3e3a00b3ff Fix ARM build, which broke due to some *.c->*.cpp change... /me pets Ingo.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34868 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-03 03:55:26 +00:00
Stephan Aßmus
5c9bd9d619 Patch by Andreas Faerber with small changes by myself:
* Skip mappings to non-physical memory in the PPC MMU code. Gets the
   PPC kernel booting a little further.

Thanks! Fixes ticket #5193.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34863 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-02 18:40:07 +00:00
Stephan Aßmus
e355ce92a4 Patch by Andreas Faerber:
* Fix compilation with tracing enabled.

Thanks! Fixes ticket #5188.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34860 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-02 18:26:43 +00:00
Stephan Aßmus
352455f269 Patch by Andreas Faerber:
* The kernel's _start entry function expects now a second argument, the
   current CPU index. The PPC boot loader didn't initialize GPR4, passing
   its second argument, the kernel entry address, as CPU index, causing
   smp_cpu_rendezvous() to loop forever. This fix gets the PPC boot to a
   kernel debug prompt. The CPU index is currently fixed to 0.

Thanks a lot!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34854 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-02 10:09:09 +00:00
Stephan Aßmus
50028fc7aa Patch by Andreas Faerber:
* Choosing Reboot from the menu will now reboot the system instead of
   returning to the OpenFirmware prompt. Places, where returning to the
   prompt was desirable have been adapted to maintain their current behavior.

Thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34852 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-02 10:04:37 +00:00
Stephan Aßmus
9592b510c5 Patch by Andreas Faerber:
* Fixed typo in panic() message.

Thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34851 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-02 10:00:53 +00:00
Stephan Aßmus
431b9a3183 Patch by Andreas Faerber: (OpenFirmware network boot)
* If retrieving an IP address from the non-standard /chosen/dhcp-response
   fails, try to parse it from /options/default-client-ip instead.

Thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34850 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-02 09:38:53 +00:00
Ingo Weinhold
3ce2634533 * Fixed the semantics of [v]snprintf(): If the buffer is not large enough,
the function shall nevertheless return the length of the string that would
  be written, if the buffer were large enough.
  Added a touch of C++ while doing that. :-)
* Fixed the instances in boot loader, kernel, and kernel modules where the
  wrong semantics were expected. The majority of uses actually.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34826 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-30 15:17:09 +00:00
Ingo Weinhold
3069ca963e Enable loading debug symbols again. The approach to use the driver settings
is broken.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34825 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-30 14:55:07 +00:00
Fredrik Holmqvist
118fa8936e Make sure settings isn't null. Not my finest day apparently.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34679 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-15 22:19:08 +00:00
Fredrik Holmqvist
0f6b7a8cad Unload driver settings as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34678 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-15 22:05:45 +00:00
Fredrik Holmqvist
d403ff624f Style fix:
* static variables should start with s.
 * function blocks should start on new line.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34668 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-15 17:00:03 +00:00
Fredrik Holmqvist
5e972c0f3d Implemented TODO about not loading symbols at boot.
This saves ~0.5s of boot time here, but I suspect it might be better for CD.
Enabled loadSymbols in kernel settings so the behavior should be the same as before this change.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34666 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-15 15:55:16 +00:00
Ingo Weinhold
db905187d5 Implemented a class uint128 with the basic arithmetic operations and
replaced the previous, somewhat complicated and inexact method of
computing the TSC conversion factor using it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34542 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-07 21:37:56 +00:00
Ingo Weinhold
bd185b4117 *.c -> *.cpp
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34417 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-01 17:06:26 +00:00
Axel Dörfler
7cab82a1c9 * Cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34415 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-01 16:20:41 +00:00
Axel Dörfler
943bec1287 * Made a class out of free_chunk.
* Fixed realloc() - "size" wasn't what I thought it would be.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34412 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-01 15:39:55 +00:00
Axel Dörfler
3c627a2751 * Reimplemented realloc() to reuse the previous buffer if possible and useful.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34409 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-01 14:50:33 +00:00
Axel Dörfler
6242fd5977 * Added the possibility to debug latency issues with spinlocks.
* When DEBUG_SPINLOCK_LATENCIES is 1, the system will panic if any spinlock is
  held longer than DEBUG_LATENCY micro seconds (currently 200). If your system
  doesn't boot anymore, a new safemode setting can disable the panic.
* Besides some problems during boot when the MTRRs are set up, 200 usecs work
  fine here if all debug output is turned off (the output stuff is definitely
  problematic, though I don't have a good idea on how to improve upon it a lot).
* Renamed the formerly BeOS compatible safemode settings to look better; there
  is no need to be compatible there.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33953 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-08 20:26:48 +00:00
Axel Dörfler
bec53b590f * Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33952 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-08 20:20:27 +00:00
Axel Dörfler
361f5cdfaf * Build fix for the boot loader (it's now using the new utility functions as
well). Sorry!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33560 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-12 19:42:50 +00:00
François Revol
dc33329747 First attempt at an Amiga boot sector, not yet working.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33535 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-11 20:28:44 +00:00
Axel Dörfler
c0f44af061 * Fixed PXE boot loader build again (hey mmu_man!).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33456 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-06 09:25:35 +00:00
Stefano Ceccherini
1d958a301e Moved the "disable APIC" menu(s) to smp.cpp.
Also only enable them if there's an APIC.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33333 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-28 09:42:59 +00:00
Stefano Ceccherini
dd9b76727d Enable hpet_init() in the boot loader. All it does is searching the hpet
table and mapping it if needed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33286 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-25 07:06:58 +00:00
Stefano Ceccherini
1d5026909d Basically reverted previous commit, since at that point we haven't yet
checked the existence of the apics.
Moved the code to disable the local apic from arch_timer.c to arch_int.cpp, so
we also avoid installing the interrupt handler for it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33149 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-15 20:22:04 +00:00
Stefano Ceccherini
24ca62447c Only show the "Disable APIC" option if an APIC is found.
Same for the IOAPIC, but commented out the code, since we're not using the
IOAPIC yet.
Also renamed the option to "Disable LOCAL APIC", since it's more correct.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33147 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-15 17:43:30 +00:00
Stefano Ceccherini
f0bf38026a Add safemode option to disable the use of APIC timers
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33132 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-14 09:02:15 +00:00
Marcus Overhagen
a26bf7958f truncate strings to allow building the debug version
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32837 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-30 15:04:04 +00:00
Stefano Ceccherini
1c2a5ae241 Fixed gcc4 warnings.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32764 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-27 20:26:31 +00:00
Axel Dörfler
89294b5084 * Added option for enabling serial debug output.
* Moved device_manager/settings.cpp to debug/safemode_settings.cpp.
* Removed the somewhat hacky concatenation of kernel settings and safemode
  settings in the boot loader. Instead, get_safemode_option() will now fall
  back to the kernel settings, if it couldn't spot a setting in the safemode
  settings. This allows for more control, and also makes enabling serial
  debug output actually work (ie. overriding the kernel settings via safemode
  options).
* Adjusted debug_init_post_vm(), and smp_init_other_cpus() to use
  get_safemode_boolean().
* Therefore, I added safemode_settings.cpp to the boot loader as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32685 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-26 08:47:54 +00:00
Axel Dörfler
e17f8de82d * Cleanup, no functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32684 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-26 08:27:54 +00:00
Axel Dörfler
f8ebd1a328 * Cleanup, no functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32683 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-26 08:05:22 +00:00
Jonas Sundström
8e8130d1f0 Adding routerboard_mipsel platform stubs and linker script.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32594 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-22 01:48:18 +00:00
François Revol
5ce6cb5c32 [GSoC] [ARM] Patch by Johannes Wischert.
Some debug output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32416 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-15 14:31:14 +00:00
François Revol
4b953dec79 [GSoC] [ARM] Patch by Johannes Wischert.
Do call mmu_init_for_kernel() here.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32415 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-15 14:29:20 +00:00
François Revol
f6e18219c3 [GSoC] [ARM] Patch by Johannes Wischert.
Add assembler code to actually jump to the kernel.
The terminal now says:

kernel entry at 80048228
PANIC: acquire_spinlock: attempt to acquire lock 0x8012a59c with interrupts enabled
Welcome to Kernel Debugging Land...
Thread 0 "" running on CPU 0
kdebug>



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32408 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-15 02:16:23 +00:00
François Revol
12f64a3b27 [GSoC] [ARM] Patch by Johannes Wischert.
- don't panic on missing page table, just add it,
- less debug output,
- include PXA LCD regs in hw memory map.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32406 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-15 02:13:39 +00:00
François Revol
bb7479a182 [GSoC] [ARM] Patch by Johannes Wischert.
Turn off interrupts at loader entryn and make sure the mmu is disabled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32405 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-15 02:11:07 +00:00
François Revol
98a3545295 [ARM]
Add support for boot splash, only for PXA.
Disabled for now as it forces the framebuffer onto some useful data.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32399 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-14 22:14:07 +00:00
François Revol
477d2636d8 Return B_OK on success.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32397 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-14 21:04:29 +00:00
François Revol
7db9fbfe80 Factor out the splash image display logic too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32395 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-14 20:51:29 +00:00
François Revol
0573d397e1 Factor out the RLE and blitting functions from bios_ia32 to platform/generic/ so it can be reused by other platforms.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32383 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-14 18:15:44 +00:00
Axel Dörfler
55be27517f * Also print the capabilities on boot up.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32360 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-14 14:31:38 +00:00
François Revol
3f6f17cf36 [ARM]
Start of framebuffer initialization for the Verdex board.
For now it points to the data section as framebuffer for testing and shows an RGB pattern.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32352 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-14 12:40:16 +00:00
Axel Dörfler
bb693d7764 * Added VESA capabilities field to the kernel args.
* The vesa driver no longer uses VGA programming if the chip does not support
  VGA compatibility.
* The VESA driver now tries to set the DAC to 8 bits per color gun.
* In VESA modes, the driver no longer tries to use VGA programming; introduced
  the new vesa_set_indexed_colors() that is now used for palette programming.
  This should fix wrong colors of 8 bit BWindowScreen users with VESA on real
  hardware (emulators usually didn't mind either way).
* Note that the app_server needs to maintain a palette per 8 bit screen, as
  right now, the colors are garbled after a workspace switch. Stefano, are you
  looking into that already?


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32347 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-14 09:49:28 +00:00
François Revol
7ac9833646 [GSoC] [ARM] Patch by Johannes Wischert.
Update the memory map to account for passed tgz mapping. It's still hardcoded for now though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32339 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-14 00:10:59 +00:00
François Revol
f5ad74ca68 [ARM]
Actually enable mmu_init() since it works for verdex now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32338 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-14 00:10:03 +00:00
François Revol
89fd3a7d20 [ARM]
move checking for the tgz after debug init, and print something when found.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32337 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-13 23:43:56 +00:00
François Revol
78db3ad125 [GSoC] [ARM] Patch by Johannes Wischert.
Fix wrong string comparison.
(btw the coding style police will inspect this, beware :p)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32336 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-13 23:41:40 +00:00
François Revol
d8417ee73b [ARM]
- cleanup,
- fix getimg().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32335 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-13 23:35:02 +00:00
François Revol
715a9925f1 [ARM]
Move ARM MMU definitions to a separate header file.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32332 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-13 21:09:48 +00:00
François Revol
38ec40dcbe [GSoC] [ARM] Patch by Johannes Wischert.
Partial implementation of mmu support for the bootloader, with lot of debugging output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32330 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-13 20:30:20 +00:00
François Revol
23eafdaf31 [GSoC] [ARM] Patch by Johannes Wischert.
- stubbed out many arch kernel functions (borrowed from other archs),
- partially implement ELF relocations code, enough to load the kernel,
- move uart.c to kernel sources and use the same one for the loader,
- default implementation for gensyscalls,
- assembler code functions for interrupt masking (enable/disable/restore/query).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32327 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-13 18:34:15 +00:00
François Revol
a2577dbfd1 [ARM]
Stubbed out config_manager and pci bus_manager arch code.
Now really use the boot floppy tgz for the netbsd uimage as it all builds, but with other kernel arch code not yet commited.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32324 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-13 17:29:46 +00:00
François Revol
b927aacaf9 [GSoC] [ARM] Patch by Johannes Wischert.
Add UART initialization for OMAP. uncomment polling wait loops.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32317 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-13 14:56:40 +00:00
François Revol
01c8294cc7 [ARM]
- don't clobber the parameter regs in the entry point,
- fix entry point address for netbsd loader emulation,
- added a gUImage global to point to the uimage blob with the tgz,
- added tgz info to platform stage2 args,
- add simple uimage support, just dumps the header and gets the nth blob in the image, (seems we have a bug in the math code, some infos don't print),
- made devices.cpp use them to publish the MemoryDisk,
- add an haiku_loader_nbsd.ub target which puts both the loader and kernel_arm for now (need to replace with the tgz).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32295 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-13 05:28:30 +00:00
François Revol
1e33c1136e [ARM]
- cleanup,
- moved the startup asm code to u-boot/arch/arm/shell.S
- added netbsd loader entry point,
- store the invocation type (0: standalone, 1: netbsd),
- store the global data in a variable,
- added some debug code to see what U-Boot gives us.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32291 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-13 01:15:21 +00:00
François Revol
cd5d972ea0 [ARM]
Name the FAT; no need to list the contents.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32290 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-12 22:06:14 +00:00
François Revol
2807c5413f fix PXE build with multiboot. GRUB supports netboot btw, could be interesting to explore... but the pxe shell doesn't check for the info yet.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32289 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-12 20:30:03 +00:00
Axel Dörfler
b5cc4c1958 * Disabled multiboot for now, as it breaks the PXE build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32286 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-12 17:48:18 +00:00
François Revol
feb750d331 [ARM]
- consolidate board specific definitions into build/jam/board/*/BoardSetup to avoid duplicating address values everywhere,
	- add various addresses, boot script, custom C/C++ flags and SD card definition,
	- not sure BoardSetup is included at the best place though,
	- replaced board-specific ldscript with passing the loader address directly to LD from BoardSetup,
- added haiku.mmc target which generates an mmc/SD card image with a FAT partition with the files needed to boot for the board, should later be integrated with haiku.image with the BFS partition offset passed to bfs_shell, requires apt:sfdisk,mtools on GNU/Linux,
- added some more rules, one to build a script for the SD image,
- fake a NetBSD loader for now, U-Boot doesn't know haiku, and we'll need a way to pass the tgz image and RAM size, we'll either use standlone way (usual C argv[]) or the NetBSD args,
- style fixes,
- 80 cols, /me pets Ingo.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32284 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-12 16:12:35 +00:00
Axel Dörfler
30f4c392a4 * Cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32281 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-12 14:39:37 +00:00
Axel Dörfler
9e90c30ebd * Fixed warnings.
* Removed FAT support from the boot loader for now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32276 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-12 14:12:09 +00:00
François Revol
ac15f9dd16 [ARM]
Add rule to handle uimage, and board-specific stuff to handle load addresses. Need to fix them, u-boot doesn't like loading the file with the header where the header says it should go, must copy to a different address.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32214 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-09 16:40:17 +00:00
François Revol
e60a2810f6 [ARM]
Include board-specific file from the u-boot ldscript, to allow linking to different load addresses.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32207 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-08 16:02:34 +00:00
François Revol
0693778cee [ARM]
Move uart.c to arch/arm/ where it belongs, it has nothing u-boot specific.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32203 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-08 02:38:44 +00:00
François Revol
f875744d56 [ARM]
Remove duplicate header.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32202 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-08 02:26:01 +00:00
François Revol
658d387ad5 [ARM]
- cleanup,
- add an uart_debug_port() to avoid using the #define in serial.cpp,
- use board_config defines in uart.c.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32201 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-08 02:23:22 +00:00
François Revol
67a0108c3b [ARM]
- add board specific headers to includes,
- some unused flash image targets.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32199 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-08 02:01:59 +00:00
Axel Dörfler
13247f3a8c * This fixes VGA mode frame buffer use, no idea when this got broken. It might
be broken in the app_server now, but I haven't checked yet.
* Fixed typo in vesa.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32141 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-05 17:24:23 +00:00
François Revol
f676f30b36 Remove those antique misleading leftovers, the good ones are at headers/private/kernel/boot/images.h
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32116 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-04 18:50:08 +00:00
François Revol
f335531bbc Remove file map disk support by default, it's not used anyway, and we'll use layers for CD anyway. Doesn't spare that many bytes though...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32110 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-04 09:00:10 +00:00
François Revol
af9475fd3d Initialize args.arguments on ARM too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32100 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-03 19:53:17 +00:00
François Revol
696e647c0f Implemented getting bootargs from OF. Untested.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32081 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-03 15:12:24 +00:00
François Revol
56c6c0fefb - introduced an "argumetns" field in stage2_args to hold command line args from chaining loader,
- added some multiboot support code:
	- dump some of the passed info,
	- parse command line (skip the 'kernel' name and pass the rest to stage2_args.arguments),
- added an add_stage2_driver_settings() function which takes stage2_args.arguments and translates it into safe mode driver settings, a bit dumb for now.
This allows using qemu -kernel haiku_loader -append 'debug_screen true' and get debug output without having to enter the menu (once multiboot info is used to determine the boot device too).
The idea is to allow passing driver settings and using them to pass extra stuff (like 'force_keymap fr' and other stuff for demo), and to help automate tests ('run_test /bin/sometest').
This should answer Axel's question :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32076 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-03 14:39:41 +00:00
Ingo Weinhold
ea2abd110b * Renamed the ROUNDOWN macro to ROUNDDOWN. Also changed the implementation of
ROUNDUP to use '*' and '/' -- the compiler will optimize that for powers of
  two anyway and this implementation works for other numbers as well.
* The thread::fault_handler use in C[++] code was broken with gcc 4. At least
  when other functions were invoked. Trying to trick the compiler wasn't a
  particularly good idea anyway, since the next compiler version could break
  the trick again. So the general policy is to use the fault handlers only in
  assembly code where we have full control. Changed that for x86 (save for the
  vm86 mode, which has a similar mechanism), but not for the other
  architectures.
* Introduced fault_handler, fault_handler_stack_pointer, and fault_jump_buffer
  fields in the cpu_ent structure, which must be used instead of
  thread::fault_handler in the kernel debugger. Consequently user_memcpy() must
  not be used in the kernel debugger either. Introduced a debug_memcpy()
  instead.
* Introduced debug_call_with_fault_handler() function which calls a function
  in a setjmp() and fault handler context. The architecture specific backend
  arch_debug_call_with_fault_handler() has only been implemented for x86 yet.
* Introduced debug_is_kernel_memory_accessible() for use in the kernel
  debugger. It determines whether a range of memory can be accessed in the
  way specified. The architecture specific back end
  arch_vm_translation_map_is_kernel_page_accessible() has only been implemented
  for x86 yet.
* Added arch_debug_unset_current_thread() (only implemented for x86) to unset
  the current thread pointer in the kernel debugger. When entering the kernel
  debugger we do some basic sanity checks of the currently set thread structure
  and unset it, if they fail. This allows certain commands (most importantly
  the stack trace command) to avoid accessing the thread structure.
* x86: When handling a double fault, we do now install a special handler for
  page faults. This allows us to gracefully catch faulting commands, even if
  e.g. the thread structure is toast.

We are now in much better shape to deal with double faults. Hopefully avoiding
the triple faults that some people have been experiencing on their hardware
and ideally even allowing to use the kernel debugger normally.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32073 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-03 12:39:56 +00:00
François Revol
4b8d0e6856 Some ppc fixes for #4115, patch by kallisti5 (without the #ifdef _BOOT_MODE):
- stubbed out arch_cpu_init_percpu(),
- make atomic ops declarations extern "C",
- move calls to [i]sync inside the asm code that needs it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32067 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-03 10:10:22 +00:00
François Revol
91517f4f12 Minimal definition of the MultiBoot Info struct, should be enough for now.
We use official names for defines & struct members.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32060 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-01 12:32:18 +00:00
François Revol
a9c45a68ef Add MultiBoot support.
Based on a patch from Dustin Howett, reworked, and help from Vladimir 'phcoder' Serbinenko.
- used defines for clarity, the rest of teh code could make use of them too...
- added a gMultiBootInfo pointer to the passed args, to let C code handle it instead of faking the boot drive ID,
- conditionalized the copy back, maybe we can get rid of it when QEMU handles our default load address correctly,
- added video mode info to ask for 1024x768 but QEMU ignores it anyway, and we might need to show the menu, so it's disabled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32059 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-01 12:03:22 +00:00
Ingo Weinhold
1af695be01 Automatic whitespace cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32044 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-08-01 01:18:39 +00:00
François Revol
f2a3f51996 jam target to build a flash image. Requires passing UBOOT_IMAGE to jam.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31823 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-27 17:11:40 +00:00
François Revol
20cbef82a4 [GSoC] [ARM] Patch by Johannes Wischert.
Stubbed u-boot platform code. Mostly copied from other platforms.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31818 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-27 16:13:38 +00:00
François Revol
811662afae [GSoC] [ARM] Patch by Johannes Wischert.
Default arm arch Jamfile for bootloader.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31817 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-27 16:10:29 +00:00
Axel Dörfler
71e439ea3e * Moved most utility functions from bfs.h to Utility.h.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31770 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-26 13:44:31 +00:00
Axel Dörfler
c06e68d0c8 * Added partitioning system modules efi_gpt, amiga_rdb, and apple to the image.
* Changed the boot loader to have architecture dependent partition/file system
  support. Amiga/Apple partitions, and the AmigaFFS file system are now only
  supported on PPC, while EFI GPT, and the FAT file system is now only supported
  on x86.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31713 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-23 12:10:09 +00:00
Axel Dörfler
bdee97bc3a * Applied slightly changed patch by Alexander von Gluck.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31708 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-23 08:22:01 +00:00
Ingo Weinhold
1cc5e46925 Added offset and size parameters to create_child_partition() and
KPartition::CreateChild(). CreateChild() calls AddChild(), which publishes
the new partition, though at that point offset and size were not set, so that
the published devices would not be usable.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31463 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-08 20:26:43 +00:00
Michael Lotz
03a574d8cd * Check for disk extensions before using them (mostly for good practice reasons)
* A CHS read error would previously be hidden by a successful disk system reset.
  Not that it matters much because it'd have resulted in a non-booting system
  anyway.
* Add some more debug output, minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30643 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-06 11:55:19 +00:00
Jonas Sundström
cb8f3e2698 More mipsel
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30621 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-03 22:41:38 +00:00
François Revol
e5ea3d8c41 Print the zlib-provided message in case of error.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30483 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-29 01:53:58 +00:00
François Revol
ff6382031e Build only the required part of zlib with correct options instead of reusing the userland version. This fixes some weird m68k issue, and still works on x86.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30482 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-29 01:52:01 +00:00
François Revol
12442ce54b - add a gBootDriveAPI variable telling which method was used to load,
- move gBoot* out of the boot sector,
- fix the FAT params to actually indicate 1.44kB floppy,
- fix the FloppyDrive class to also use 18 sectors/track, so now tarfs won't get data from start of disk when on the middle.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30481 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-29 01:35:37 +00:00
François Revol
f77b0a6b83 Implemented a FloppyDrive class that uses Floprd, this allows the loader to start reading the tgz, but it fails after 2 blocks.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30464 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-27 16:18:08 +00:00
François Revol
4fd7901292 Finally managed to get floppy boot working for Atari \o/
- loop on Floprd() alternating sides every sect/track, currently hardcoded from the FAT bootblock as probing like the NetBSD loader asserts ARAnyM,
- print a dot / sector read in the great tradition of bootloaders,
- set gBootedFromImage correctly,
- fix the script, make it jam later on.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30455 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-27 02:37:31 +00:00
François Revol
901b8dd28a No reason to keep the .prg startup asm code inside the first 512 bytes, this frees up some space for the floppy code.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30446 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-26 21:45:36 +00:00
François Revol
f2cec6b732 Just keep this around before it get lost... Failed attempt at generating a bootable floppy for Atari.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30444 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-26 21:17:19 +00:00
Michael Lotz
5c8e597e90 Don't try to use disk extensions for non-disk devices (like actual floppies or
emulated ones on CD-boot). One of my laptops returns bogus drive parameters
and another one silently fails the read, previously preventing CD-boot on both.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30389 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-24 23:16:26 +00:00
Axel Dörfler
317bd7dda3 * Changed directory structure as suggested on the mailing list.
* Made the TimeZoneView less error prone, and also actually use Haiku code (the
  previous check didn't work since it used #if, not #ifdef).
* Also took the liberty to rename our boot loader to haiku_loader, since I had
  to update the nasm binary anyway. Updated the assembly sources to nasm 2.0.
* I haven't found where the synth location in the MIDI code is specified,
  though.
* Also, NetBootArchive, and FloppyBootImage haven't been updated yet. Will do
  so next.
* Some optional packages still put their license to beos/etc/licenses. I didn't
  update them yet, as we'll probably do so anyway at some point. Also, I think
  we might want to introduce a common/data/licenses instead for those.
* If you encounter any problems, please tell!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29876 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-03 09:02:44 +00:00
Stephan Aßmus
d30acbf30b Patch by maxime.simon: Don't allow to enter sub-menus by the space bar anymore.
This allows to have the first item selected when entering a menu, since still
pressing space would not enter it unintentionally anymore, in case it's a sub-
menu again. Even though it makes some sense to have "Continue booting" selected
by default, it somehow feels more natural to have the first item always selected
instead. Thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29832 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-31 16:28:50 +00:00
Philippe Houdoin
532a47a9f0 Fixed broken style I've introduced.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29228 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-15 21:56:27 +00:00
Philippe Houdoin
4c0255d795 Refactor the code, computing next entry earlier and use continue as suggested by Jerome.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29225 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-15 19:27:36 +00:00
Philippe Houdoin
7f0b01654d Fixed the patch: on disabled processor entry, next entry pointer wasn't computed,
leading to an infinite loop...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29224 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-15 18:43:02 +00:00
Philippe Houdoin
63c851a15d Applied patch supplied by jkeeping in #3445: smp_do_mp_config wasn't checking
MPS table CPU entries for the enabled flag.
This caused Haiku to fail to boot under KVM on Linux.

Thanks you, jkeeping.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29222 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-15 18:26:13 +00:00
Michael Lotz
d0eaec3086 Fix more operator precedence errors. These do not do what you'd expect at first
sight. The comparison operator takes precedence over the binary ones.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29121 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-01 23:24:55 +00:00
François Revol
9b7603b992 This should definitely fix CD booting, it was still looking for the tgz at 192k while zbeos is now almost 300k... Maybe we need something more failproof but it shoudl do for now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28965 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-01-20 04:40:57 +00:00
François Revol
b641656c2b Make sure the hack-coff tool is built when needed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28910 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-01-15 16:47:53 +00:00
François Revol
7613c6c7ca Add a boot menu option to disable using the IO APIC for IRQ handling and fallback to PIC.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28686 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-18 14:40:40 +00:00
François Revol
1c532eedf1 Make the tgz archive offset in floppy image settable. Set it to 270k for now, until zbeos gets some diet.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28657 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-15 03:30:00 +00:00
François Revol
fd19697e68 Make use of hack-coff.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28623 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-12 02:36:03 +00:00
François Revol
11a47de374 Support creating a COFF bootloader from the ELF one, at least for ppc.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28611 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-11 19:08:51 +00:00
François Revol
3b148e533f This gets the bootloader further on, but it still breaks... OpenHackware seems worse than Pegasos OF :^)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28587 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-10 02:03:58 +00:00
François Revol
9da2356857 Work in progress to pass the image extents to the kernel,
- code is disabled yet as the bootloader doesn't have add_boot_item.. will need to pass via kernel args
- add a GetFileMap() method to the vfs, and implement it in FAT code.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28445 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-01 20:39:14 +00:00
Axel Dörfler
a8cecea091 * As suggested by Gerald, we now ignore the EDID information on VBE2 graphics
chips due to possible timing issues.
* This means you will now get a 1024x768 boot screen on older hardware instead
  of the one of your native resolution. If that always worked great for you,
  and you want to be able to turn on using EDID information again, please yell.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28399 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-31 13:35:09 +00:00
Axel Dörfler
39c7faa460 * vesa_set_mode() now gets another parameter that specifies whether or not
the mode timing should be used.
* Apparently, some VBE3 implementations don't implement the CRTC support, and
  they seem to fail when the SET_MODE_SPECIFY_CRTC bit is set.
* Therefore, we'll first try with timing, and if that fails, we'll try again
  without it. This should bring back the boot screen for all those who had
  problems with it before.
* Added tracing output of the CRTC to be used.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28398 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-31 13:14:07 +00:00
Axel Dörfler
b4c8ccc372 * The boot loader now creates a CRTCInfoBlock structure when detailed EDID
mode informations are available.
* This is passed to the graphics card when the mode is set in the hopes that it
  will be more conforming.
* Not yet tested on real hardware, though, therefore the VESA driver doesn't
  do anything like this yet. I will test next, but please report any problems
  with this nonetheless.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28390 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-31 09:52:57 +00:00
François Revol
d4dcbf95f6 - Fix build.
- make system_time() return something sensible until platform code works.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28271 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-21 21:23:55 +00:00
François Revol
861fb97cf9 Inline Unset and SetTo correctly. I copied the class from BFS which only uses it in a single file...
Thx for the gcc4 fixes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28166 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-16 10:05:59 +00:00
Stefano Ceccherini
a96b4beb84 Fix build for gcc4. If you really want to inline these methods, they need to be implemented in the header
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28161 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-16 09:53:06 +00:00
Stefano Ceccherini
b5e67ab6fb Fix build for gcc4
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28160 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-16 09:30:07 +00:00
François Revol
fcbcb00e18 Turn off debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28157 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-16 00:06:42 +00:00
François Revol
2cf4975b4b Add FAT32 support. This allows the bootloader to find a BFS image file (currently named BEOS\IMAGE.BE) and start booting for it, until the kernel tries to mount the boot partition.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28156 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-15 23:54:04 +00:00
François Revol
33fa38c894 Avoid using the first physical page. The first 2kB are supposedly protected by the hardware (though it should be accessible by supervisor...) This fixes an segfault.
Now the kernel panics in M68KAtari::InitTimer()... "WRITEME" :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28008 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-12 21:34:31 +00:00
Ingo Weinhold
b18c9b97ae * Implemented x86 assembly version of memset().
* memset() is now available through the commpage.
* CPU modules can provide a model-optimized memset().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27952 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-10 18:43:46 +00:00
Ingo Weinhold
379ad6d037 * Moved the arch specific stuff in src/system/kernel/lib into arch/...
subdirectories. Also moved the x86 kernel arch_string.S there.
* Moved memcpy.c from src/system/libroot/posix/string into the
  arch/generic subdirectory.
* Dealt with the consequences of moving things around. Affected are also
  the boot loader and runtime loader builds.

Adjust the m68k and ppc parts, too, but only the x86 build is tested.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27947 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-09 23:47:01 +00:00
François Revol
93861ead3e Better floppy media descriptor for the fake FAT.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27937 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-09 09:50:00 +00:00
Ingo Weinhold
9618c0dc63 Panic when trying to access the small data region. It is not loaded from
disk.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27755 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-27 00:35:25 +00:00
Ingo Weinhold
1cd8c4cc08 Let the boot loader set the kernel image's name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27754 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-27 00:33:20 +00:00
Ingo Weinhold
0dc4d1e5ca Reverted r27685, r27676, r27665, and r27664, the changes related to
letting the boot loader provide full paths for the pre-loaded images.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27753 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-27 00:28:10 +00:00
Axel Dörfler
4a47b14ea4 * Enlarged a single kernel_args chunk to 32 KB (was 16 KB).
* Reduced the kernel_args array size from 32 to 16 (7 are used on a normal
  build).
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27690 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-22 15:36:46 +00:00
Axel Dörfler
18ee966f0a * The boot loader now replaces the first path component of all path names
passed to the kernel with "boot" instead of the volume name; the kernel
  mounts the boot volume always as "/boot".
* This should fix #2757.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27685 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-22 08:58:07 +00:00
Ingo Weinhold
32f1784d37 Doubled heap size to 128 KB. Should hopefully fix bug #2756.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27680 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-21 21:43:12 +00:00
Ingo Weinhold
5a150dfe6d * Added optional tracing for allocations.
* Lifted hard-coded 64 KB heap limit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27679 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-21 21:42:17 +00:00
Ingo Weinhold
cc3b6f3a05 malloc() now also logs an error when a request could not be served.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27677 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-21 21:25:58 +00:00
Ingo Weinhold
4ed420362a Log an error when there's not enough memory for the inode.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27676 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-21 21:19:25 +00:00
Ingo Weinhold
b34e395eaf The boot loader does now set the names of the images it loads to the
full paths.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27665 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-21 13:00:31 +00:00
Ingo Weinhold
6aa2c9ecf1 * Directory stores its parent directory (if any), now.
* Adjusted used files systems accordingly.
* BFS::Stream::GetName() was broken. It accessed the small data region
  which wasn't loaded, since BFS::Stream derived from bfs_inode, which
  is a variably-sized structure with the small data region at the end.
  Changed that to a ref-counted, shared member instead.
* Implemented RootFileSystem::GetName().
* Added Directory::GetPath() to get a full path of the directory or an
  entry.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27664 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-21 12:55:41 +00:00
Michael Lotz
84cd8e6902 CID 1251: If the NetStack::Init() fails, return the corresponding error instead
of setting the global net stack to a deleted value.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27479 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-13 14:41:42 +00:00
Axel Dörfler
123786187c * acpi_init() could pass a NULL "rsdp" to acpi_check_rsdt() which would happily
dereference it no matter what. This fixes CID 1282.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27392 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-09 21:30:37 +00:00
Axel Dörfler
ca6210d5e9 * closest_video_mode() now only returns modes with a width less or equal than
the one specified. This should fix the "video mode out of range" message of
  your monitor during boot, in case you had that one. Thanks to Hartmut Reh
  for his help to be able to spot this.
* The mode returned by find_edid_mode(..., true) was never used.
* find_edid_mode() did not return any mode if there were no detailed modes
  available.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27390 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-09 15:18:51 +00:00
Stefano Ceccherini
7d2739a00f argument was missing from the TRACE call
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27368 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-08 08:31:57 +00:00
Stephan Aßmus
ec56835f51 Patch by David Powell:
* Implement color palette generation for the boot splash images in the
  generate_boot_screen build tool. Only 4-bit screen support is missing now.
* Adopted images.h with the new results from generate_boot_screen.

This should fix black boot screens for graphics cards that don't support
true color modes for the native resolution. I've tried to find the ticket,
#2177 almost looks like the one, but it looks more like the mode is out
of range if I understand the ticket right.

Thanks a lot, David, and sorry it took so very long to apply your patch!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27223 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-28 16:59:34 +00:00
Stefano Ceccherini
17d39c90b1 code for initializing hpet in the bootloader. Moved around some hpet definitions. HPET initialization is commented out, at the moment
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27131 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-22 08:15:14 +00:00
Axel Dörfler
2a1a5a296f * Turned off debug output of the FileMapDisk stuff.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27091 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-20 20:44:29 +00:00
Axel Dörfler
8b7a165ad3 * We still lose information, so I enlarged this buffer a bit more.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27090 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-20 20:43:03 +00:00
Axel Dörfler
60642f8781 * The EDID info is now only dumped if TRACE_VIDEO is defined (currently the
default).
* Enlarged the serial buffer that is handed over to the kernel to 8192 bytes.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27067 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-19 18:37:30 +00:00
François Revol
2a1458104d Avoid mounting images inside images (inside images (inside images...)).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26996 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-16 22:23:10 +00:00
Michael Lotz
ee8d227588 * Update the size of the safemode settings "file" when concatenating it with
the kernel settings. Settings that were checked in the kernel (like on-screen
  debug output) didn't work anymore, because when handing the settings over to
  the kernel it would have copied only the old size part of the safemode file.
* Add a newline when the kernel and safemode settings are combined. Otherwise
  the first safemode and last kernel setting would get lost if the kernel
  settings file didn't end with a newline.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26992 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-16 18:06:52 +00:00
François Revol
6a5919034d This makes the FileMapDisk code work. zbeos can now locate an haiku.image embedded within another one as BEOS/IMAGE.BE (that's just for testing, it will be used with FAT or ISO9660 later on). It starts to boot the kernel but crashes later, it will need an fmap driver anyway.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26970 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-14 02:10:31 +00:00
Rene Gollent
fb6d782320 Fix some style issues pointed out by Axel.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26940 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-12 12:41:10 +00:00
Rene Gollent
3734bee77d When the boot loader goes to load its settings files, it will now also prepend the "kernel" settings file to the safe mode settings if it exists. This allows settings from kernel/drivers/kernel to be respected early in the boot process as well, which allows us to do things like disable_smp permanently instead of having to pick from the safe mode menu every single boot. Review welcome.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26937 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-11 23:03:36 +00:00
François Revol
0bdaf02821 Start of a file map disk driver for the bootloader.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26911 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-10 01:24:01 +00:00
Axel Dörfler
ae9067b364 * Fixed PXE boot loader build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26878 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-08 15:23:44 +00:00
Ingo Weinhold
57f2b5a013 * Changed the meaning of the {KERNEL,USER}_STACK_SIZE macros to not
include the guard pages. Adjusted the kernel and boot loader code
  accordingly -- the guard pages size is added/not removed respectively.
  The stack size passed to _kern_spawn_thread() is now the actually usable
  size, and it is no longer possible to specify a size smaller than or
  equal to the guard pages size.
* vm_create_anonymous_area(): Precommit two pages maximum -- a stack with
  only one page usable size obviously doesn't need two pages.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26819 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-05 17:19:46 +00:00
François Revol
d06c88d37d Just go for 256MB for transparent translation at boot, 32MB is not enough anyway yet, the kernel wants 16MB just for the heap.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26768 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-03 19:18:56 +00:00
François Revol
e07a1266f0 Start of boot video mode support. Not finished.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26749 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-03 01:40:57 +00:00
Axel Dörfler
c0275e9556 * Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26734 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-02 16:23:22 +00:00
François Revol
64ea0b9f74 - fix early_map
- iospace should now be initialized correctly, at least the kernel goes much further.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26726 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-02 00:39:31 +00:00
François Revol
7a1fd4cbf8 allocate all kernel page directories at boot, this will simplify later code a lot.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26721 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-01 16:01:02 +00:00
François Revol
047a9a81c2 force asm() to grock %% for register names. when not specifying constraints it doesn't understand it anymore. How inconsistent...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26635 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-25 15:52:00 +00:00
François Revol
60b11851d4 partial support for 68901 MFP chip as interrupt controller, untested.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26633 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-25 15:05:52 +00:00
François Revol
36ee9f5c62 - use a physical page for natfeat debug output for now
- add 040 cpu and mmu stuff
- use leftover from the page root table to put interrupt vector table to set VBR to


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26627 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-25 00:25:27 +00:00
François Revol
0ae1957465 - Cleanup
- rewrote early_query() to use the TT0 mapping to remove the page_hole stuff.
- fixed natfeat, using a page set up from the bootloader for now as it wants physical address. At least it's enough to see from the debugger:
load kernel...
kernel entry at 8003711a
Welcome to kernel debugger output!
Haiku revision: 26582
PANIC: unknown cpu_type 68040

Welcome to Kernel Debugging Land...
Running on CPU 0
kdebug>


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26599 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-24 02:59:47 +00:00
François Revol
77cbdee787 Add platform specific kernel args, use them to pass nat_feat info so at least the kernel can print something from the emulator...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26596 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-24 01:10:36 +00:00
François Revol
dcd20e9d16 forgotten -fno-pic makes arch_elf.cpp give the correct pointers to dprintf instead of garbage.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26560 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-22 01:56:33 +00:00
François Revol
9a486099e8 better english, tell about rela relocs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26559 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-22 01:11:45 +00:00
Stefano Ceccherini
85f2668898 Patch by Dustin Howett (GSOC): Move ACPI probing out of the
bootloader's smp init and into its own unit.
ACPI tables can now generally be found with acpi_find_table(signature).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26538 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-21 07:13:51 +00:00
François Revol
3ef0397bc5 - cleanups
- disable tracing mmu
- make scratch buffer 8k as it's declared as such... that makes things much better indeed :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26537 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-21 02:54:37 +00:00
François Revol
1e5538f5e8 silently skip PT_INTERP and PT_PHDR types as we can ignore them. This should make real unhandled types more obvious.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26535 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-21 00:31:25 +00:00
François Revol
f83297ba2d cleanup
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26533 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-21 00:29:08 +00:00
Ingo Weinhold
2b3c0783a0 mmlr + bonefish + axeld:
* Fixed build: round_up() has been renamed to key_align().
* Whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26532 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-21 00:27:44 +00:00
François Revol
1b5a395d01 Cleanup and fix 040 definitions.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26529 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-20 22:08:39 +00:00
François Revol
d14351d2c6 - better not check an entry for validity when we want to fill it
- bitfield definitions of page dirs were reversed... 040 is still wrong though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26528 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-20 21:16:37 +00:00
François Revol
74c5e8bd10 - move VADDR_TO_* to headers
- move part of mmu handling to mmu-dependant files and extend ops
- implemented 040 mmu init. doing so I spotted a bug in ARAnyM which ignored [ID]TT0. Linux likely doesn't use them but I was too lazy touse temporary page tables. I also noticed bitfields were in wrong order, to be fixed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26527 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-20 20:31:48 +00:00
François Revol
c6d022fab9 Send panic to natfeat output as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26525 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-20 17:04:41 +00:00
Michael Lotz
69dddbdea1 Initial work towards supporting IO APICs. This cannot work for PCI interrupts
though until we use ACPI for proper PCI IRQ routing through the IO APIC.
Therefore the IO APIC code path is not yet enabled and the IO APIC isn't used.
ISA interrupts would work though, as would PCI interrupts if you'd hardcode
them for your specific configuration.
Note that this change also modifies some parts in the bootloader and in the PIC
setup to make local APICs available even on non-SMP systems. This causes APIC
timers to be used instead the normal PIT if it is available (also on non-SMP
configurations).
Also fixes some general errors in SMP and PIC code as well as some code cleanup.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26492 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-18 23:19:41 +00:00
François Revol
a440169494 - fix def
- calculate ram ranges, 1 for st ram, one for fast ram if available. The kernel won't differentiate yet though, we'll have problems with DMA later on...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26480 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-18 01:11:59 +00:00
François Revol
36265c4de7 - print vars of interest to help setup mem map
- shuffle memory map
- set up transparent translations: first 32MB of RAM and last 16MB for IO space.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26478 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-17 23:56:22 +00:00
François Revol
87f9eb4682 Make sure debug output will wrap at 80 cols as the atari VT52 emulation doesn't do it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26472 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-17 02:38:23 +00:00
François Revol
3d5d990815 machine != platform
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26471 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-17 02:14:01 +00:00
François Revol
566ca582ba Fix 030 code. Seems we need to force gas to understand we want 030 code there, -m68030 didn't help.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26470 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-17 01:40:36 +00:00
François Revol
b092ec2850 030 version of transparent translation init.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26459 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-17 00:03:38 +00:00
Axel Dörfler
03fa417b70 * Removed the home-brewn locking classes in BFS besides the read/write lock
(for now).
* Inode::fSmallDataLock is now a recursive_lock, Journal::fLock is now
  a recursive_lock, too, Journal::fEntriesLock is now a mutex, as is
  BPlusTree::fIteratorLock.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26298 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-07 16:21:00 +00:00
Axel Dörfler
119b7dccf0 Patch by David Powell:
* Turn off text cursor when switching to text mode.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26222 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-02 15:04:10 +00:00
Philippe Houdoin
eb0a51d2f2 Applied patch by David Powell: fix missing and existing bootloader options menu items help texts.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26184 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-30 22:25:19 +00:00
François Revol
ff41eb66a3 Fix build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26171 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-29 21:08:12 +00:00
François Revol
931a9e2b88 Fix build
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26162 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-29 09:35:50 +00:00
François Revol
42d85ff725 Extend copyright years to 2008 for the boot menu.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26118 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-23 23:50:23 +00:00
François Revol
8df3441d64 - Add 040 mmu support
- Set global mmu ops depending on mmu type.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26116 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-23 23:13:07 +00:00
François Revol
ac00c6372d Add mmu-specific code, WIP.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26115 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-23 22:25:43 +00:00
François Revol
b75f915a2e Some fixed...
Stack grows downward on m68k!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26109 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-23 19:43:12 +00:00