Merge branch 'master' into package-management
Additional changes: * Add src/system/kernel/lib/zlib, which builds a kernel version of zlib, needed by packagefs. * BuildFeatures: Add a build feature "gcc2" to allow for easier checks. * Referenceable.cpp: Include <OS.h> instead of <debugger.h>. The latter is not needed and prevents building for the build platform. * zlib/zutil.h: Fix gcc 2 build. We really should use the external package instead. Conflicts: .gitignore build/jam/BuildSetup build/jam/FileRules build/jam/FloppyBootImage build/jam/HaikuImage build/jam/ImageRules build/jam/KernelRules build/jam/NetBootArchive build/jam/OptionalBuildFeatures build/jam/OptionalLibPackages build/jam/OptionalPackageDependencies build/jam/OptionalPackages build/scripts/build_haiku_image configure data/bin/installoptionalpackage data/system/boot/Bootscript headers/os/app/Message.h headers/os/package/PackageInfo.h headers/os/package/PackageInfoAttributes.h headers/os/package/PackageInfoSet.h headers/os/package/PackageRoster.h headers/os/package/PackageVersion.h headers/os/package/hpkg/PackageInfoAttributeValue.h headers/os/storage/FindDirectory.h headers/os/storage/Node.h headers/os/support/StringList.h headers/private/system/directories.h src/add-ons/kernel/drivers/audio/ac97/es1370/Jamfile src/add-ons/kernel/file_systems/packagefs/AttributeIndex.cpp src/add-ons/kernel/file_systems/packagefs/Jamfile src/add-ons/kernel/file_systems/packagefs/Package.cpp src/add-ons/kernel/file_systems/packagefs/Package.h src/add-ons/kernel/file_systems/packagefs/PackageDomain.cpp src/add-ons/kernel/file_systems/packagefs/PackageDomain.h src/add-ons/kernel/file_systems/packagefs/PackageFSRoot.cpp src/add-ons/kernel/file_systems/packagefs/PackageLinkDirectory.cpp src/add-ons/kernel/file_systems/packagefs/PackageLinkDirectory.h src/add-ons/kernel/file_systems/packagefs/PackageLinkSymlink.cpp src/add-ons/kernel/file_systems/packagefs/PackageLinkSymlink.h src/add-ons/kernel/file_systems/packagefs/PackageLinksDirectory.cpp src/add-ons/kernel/file_systems/packagefs/PackageNode.h src/add-ons/kernel/file_systems/packagefs/ResolvableFamily.cpp src/add-ons/kernel/file_systems/packagefs/Version.cpp src/add-ons/kernel/file_systems/packagefs/Version.h src/add-ons/kernel/file_systems/packagefs/Volume.cpp src/add-ons/kernel/file_systems/packagefs/Volume.h src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp src/add-ons/kernel/file_systems/userlandfs/shared/driver_settings.c src/apps/deskbar/BarApp.cpp src/apps/deskbar/BarMenuBar.cpp src/apps/deskbar/BarMenuBar.h src/apps/deskbar/BarView.cpp src/apps/deskbar/BarView.h src/apps/deskbar/BarWindow.cpp src/apps/deskbar/BarWindow.h src/apps/deskbar/DeskbarMenu.cpp src/apps/deskbar/DeskbarMenu.h src/apps/deskbar/DeskbarUtils.cpp src/apps/deskbar/DeskbarUtils.h src/apps/deskbar/ExpandoMenuBar.cpp src/apps/deskbar/ExpandoMenuBar.h src/apps/deskbar/TeamMenu.cpp src/apps/processcontroller/ProcessController.cpp src/apps/remotedesktop/RemoteDesktop.cpp src/bin/bash/config-top.h src/bin/finddir.c src/bin/package/Jamfile src/bin/package/command_add.cpp src/bin/package/command_create.cpp src/bin/package/command_list.cpp src/bin/package_repo/command_list.cpp src/bin/pkgman/command_refresh.cpp src/build/libbe/support/Jamfile src/build/libpackage/Jamfile src/build/libroot/Jamfile src/build/libroot/fs.cpp src/build/libroot/remapped_functions.h src/kits/locale/MutableLocaleRoster.cpp src/kits/opengl/GLRendererRoster.cpp src/kits/package/PackageInfo.cpp src/kits/package/PackageInfoSet.cpp src/kits/package/PackageRoster.cpp src/kits/package/PackageVersion.cpp src/kits/package/RepositoryCache.cpp src/kits/package/hpkg/PackageWriterImpl.cpp src/kits/package/hpkg/ReaderImplBase.cpp src/kits/package/hpkg/WriterImplBase.cpp src/kits/print/PrintTransport.cpp src/kits/print/Printer.cpp src/kits/screensaver/ScreenSaverRunner.cpp src/kits/support/StringList.cpp src/kits/tracker/ContainerWindow.cpp src/kits/tracker/DeskWindow.cpp src/kits/tracker/PoseView.cpp src/libs/print/libprint/Transport.cpp src/preferences/printers/AddPrinterDialog.cpp src/preferences/screensaver/ScreenSaverWindow.cpp src/servers/debug/DebugServer.cpp src/servers/input/AddOnManager.cpp src/servers/media_addon/MediaAddonServer.cpp src/system/boot/Jamfile src/system/boot/loader/Jamfile src/system/boot/loader/loader.cpp src/system/boot/loader/vfs.cpp src/system/kernel/fs/vfs.cpp src/system/kernel/fs/vfs_boot.cpp src/system/libroot/os/find_directory.cpp src/system/runtime_loader/runtime_loader.cpp src/tools/package/Jamfile
This commit is contained in:
@@ -11,15 +11,9 @@
|
||||
|
||||
|
||||
typedef struct addr_range {
|
||||
addr_t start;
|
||||
size_t size;
|
||||
} addr_range;
|
||||
|
||||
|
||||
typedef struct phys_addr_range {
|
||||
phys_addr_t start;
|
||||
phys_size_t size;
|
||||
} phys_addr_range;
|
||||
uint64 start;
|
||||
uint64 size;
|
||||
} _PACKED addr_range;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -27,28 +21,18 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
status_t insert_address_range(addr_range* ranges, uint32* _numRanges,
|
||||
uint32 maxRanges, addr_t start, size_t size);
|
||||
uint32 maxRanges, uint64 start, uint64 size);
|
||||
status_t remove_address_range(addr_range* ranges, uint32* _numRanges,
|
||||
uint32 maxRanges, addr_t start, size_t size);
|
||||
bool get_free_address_range(addr_range* ranges, uint32 numRanges, addr_t base,
|
||||
size_t size, addr_t* _rangeBase);
|
||||
bool is_address_range_covered(addr_range* ranges, uint32 numRanges, addr_t base,
|
||||
size_t size);
|
||||
uint32 maxRanges, uint64 start, uint64 size);
|
||||
bool get_free_address_range(addr_range* ranges, uint32 numRanges, uint64 base,
|
||||
uint64 size, uint64* _rangeBase);
|
||||
bool is_address_range_covered(addr_range* ranges, uint32 numRanges, uint64 base,
|
||||
uint64 size);
|
||||
void sort_address_ranges(addr_range* ranges, uint32 numRanges);
|
||||
|
||||
status_t insert_physical_address_range(phys_addr_range* ranges,
|
||||
uint32* _numRanges, uint32 maxRanges, phys_addr_t start, phys_size_t size);
|
||||
status_t remove_physical_address_range(phys_addr_range* ranges,
|
||||
uint32* _numRanges, uint32 maxRanges, phys_addr_t start, phys_size_t size);
|
||||
bool get_free_physical_address_range(phys_addr_range* ranges, uint32 numRanges,
|
||||
phys_addr_t base, phys_size_t size, phys_addr_t* _rangeBase);
|
||||
bool is_physical_address_range_covered(phys_addr_range* ranges,
|
||||
uint32 numRanges, phys_addr_t base, phys_size_t size);
|
||||
void sort_physical_address_ranges(phys_addr_range* ranges, uint32 numRanges);
|
||||
|
||||
status_t insert_physical_memory_range(phys_addr_t start, phys_size_t size);
|
||||
status_t insert_physical_allocated_range(phys_addr_t start, phys_size_t size);
|
||||
status_t insert_virtual_allocated_range(addr_t start, size_t size);
|
||||
status_t insert_physical_memory_range(uint64 start, uint64 size);
|
||||
status_t insert_physical_allocated_range(uint64 start, uint64 size);
|
||||
status_t insert_virtual_allocated_range(uint64 start, uint64 size);
|
||||
void ignore_physical_memory_ranges_beyond_4gb();
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -5,24 +5,21 @@
|
||||
#ifndef KERNEL_BOOT_ARCH_H
|
||||
#define KERNEL_BOOT_ARCH_H
|
||||
|
||||
|
||||
#include <SupportDefs.h>
|
||||
#include <boot/elf.h>
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* ELF support */
|
||||
|
||||
extern status_t boot_arch_elf_relocate_rel(struct preloaded_image *image,
|
||||
struct Elf32_Rel *rel, int rel_len);
|
||||
extern status_t boot_arch_elf_relocate_rela(struct preloaded_image *image,
|
||||
struct Elf32_Rela *rel, int rel_len);
|
||||
extern status_t boot_arch_elf_relocate_rel(preloaded_elf32_image* image,
|
||||
struct Elf32_Rel* rel, int rel_len);
|
||||
extern status_t boot_arch_elf_relocate_rel(preloaded_elf64_image* image,
|
||||
struct Elf64_Rel* rel, int rel_len);
|
||||
extern status_t boot_arch_elf_relocate_rela(preloaded_elf32_image* image,
|
||||
struct Elf32_Rela* rel, int rel_len);
|
||||
extern status_t boot_arch_elf_relocate_rela(preloaded_elf64_image* image,
|
||||
struct Elf64_Rela* rel, int rel_len);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* KERNEL_BOOT_ARCH_H */
|
||||
|
||||
@@ -34,41 +34,41 @@ typedef struct disk_identifier {
|
||||
union {
|
||||
struct {
|
||||
uint16 base_address;
|
||||
} legacy;
|
||||
} _PACKED legacy;
|
||||
struct {
|
||||
uint8 bus;
|
||||
uint8 slot;
|
||||
uint8 function;
|
||||
} pci;
|
||||
} _PACKED pci;
|
||||
} bus;
|
||||
union {
|
||||
struct {
|
||||
bool master;
|
||||
} ata;
|
||||
} _PACKED ata;
|
||||
struct {
|
||||
bool master;
|
||||
uint8 logical_unit;
|
||||
} atapi;
|
||||
} _PACKED atapi;
|
||||
struct {
|
||||
uint8 logical_unit;
|
||||
} scsi;
|
||||
} _PACKED scsi;
|
||||
struct {
|
||||
uint8 tbd;
|
||||
} usb;
|
||||
} _PACKED usb;
|
||||
struct {
|
||||
uint64 guid;
|
||||
} firewire;
|
||||
} _PACKED firewire;
|
||||
struct {
|
||||
uint64 wwd;
|
||||
} fibre;
|
||||
} _PACKED fibre;
|
||||
struct {
|
||||
off_t size;
|
||||
struct {
|
||||
off_t offset;
|
||||
uint32 sum;
|
||||
} check_sums[NUM_DISK_CHECK_SUMS];
|
||||
} unknown;
|
||||
} _PACKED check_sums[NUM_DISK_CHECK_SUMS];
|
||||
} _PACKED unknown;
|
||||
} device;
|
||||
} disk_identifier;
|
||||
} _PACKED disk_identifier;
|
||||
|
||||
#endif /* KERNEL_BOOT_DISK_IDENTIFIER_H */
|
||||
|
||||
@@ -6,14 +6,15 @@
|
||||
#define KERNEL_BOOT_DRIVER_SETTINGS_H
|
||||
|
||||
|
||||
#include <util/FixedWidthPointer.h>
|
||||
#include <util/list.h>
|
||||
|
||||
|
||||
struct driver_settings_file {
|
||||
struct driver_settings_file *next;
|
||||
FixedWidthPointer<struct driver_settings_file> next;
|
||||
char name[B_OS_NAME_LENGTH];
|
||||
char *buffer;
|
||||
size_t size;
|
||||
};
|
||||
FixedWidthPointer<char> buffer;
|
||||
uint32 size;
|
||||
} _PACKED;
|
||||
|
||||
#endif /* KERNEL_BOOT_DRIVER_SETTINGS_H */
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
** Copyright 2003-2004, Axel Dörfler, [email protected]. All rights reserved.
|
||||
** Distributed under the terms of the OpenBeOS License.
|
||||
*/
|
||||
* Copyright 2003-2004, Axel Dörfler, [email protected]. All rights reserved.
|
||||
* Copyright 2012, Alex Smith, [email protected].
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef KERNEL_BOOT_ELF_H
|
||||
#define KERNEL_BOOT_ELF_H
|
||||
|
||||
@@ -9,45 +10,88 @@
|
||||
#include <boot/addr_range.h>
|
||||
#include <sys/stat.h>
|
||||
#include <elf_priv.h>
|
||||
#include <util/FixedWidthPointer.h>
|
||||
|
||||
typedef struct elf32_region {
|
||||
area_id id;
|
||||
uint32 start;
|
||||
uint32 size;
|
||||
int32 delta;
|
||||
} _PACKED elf32_region;
|
||||
|
||||
typedef struct elf64_region {
|
||||
area_id id;
|
||||
uint64 start;
|
||||
uint64 size;
|
||||
int64 delta;
|
||||
} _PACKED elf64_region;
|
||||
|
||||
struct preloaded_image {
|
||||
struct preloaded_image *next;
|
||||
char *name;
|
||||
elf_region text_region;
|
||||
elf_region data_region;
|
||||
FixedWidthPointer<struct preloaded_image> next;
|
||||
FixedWidthPointer<char> name;
|
||||
uint8 elf_class;
|
||||
addr_range dynamic_section;
|
||||
struct Elf32_Ehdr elf_header;
|
||||
|
||||
struct Elf32_Sym *syms;
|
||||
struct Elf32_Rel *rel;
|
||||
int rel_len;
|
||||
struct Elf32_Rela *rela;
|
||||
int rela_len;
|
||||
struct Elf32_Rel *pltrel;
|
||||
int pltrel_len;
|
||||
int pltrel_type;
|
||||
|
||||
struct Elf32_Sym *debug_symbols;
|
||||
const char *debug_string_table;
|
||||
uint32 num_debug_symbols, debug_string_table_size;
|
||||
FixedWidthPointer<char> debug_string_table;
|
||||
uint32 num_debug_symbols;
|
||||
uint32 debug_string_table_size;
|
||||
|
||||
ino_t inode;
|
||||
image_id id;
|
||||
// the ID field will be filled out in the kernel
|
||||
bool is_module;
|
||||
// set by the module initialization code
|
||||
};
|
||||
} _PACKED;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
struct preloaded_elf32_image : public preloaded_image {
|
||||
Elf32_Ehdr elf_header;
|
||||
elf32_region text_region;
|
||||
elf32_region data_region;
|
||||
|
||||
FixedWidthPointer<Elf32_Sym> syms;
|
||||
FixedWidthPointer<Elf32_Rel> rel;
|
||||
int32 rel_len;
|
||||
FixedWidthPointer<Elf32_Rela> rela;
|
||||
int32 rela_len;
|
||||
FixedWidthPointer<Elf32_Rel> pltrel;
|
||||
int32 pltrel_len;
|
||||
int32 pltrel_type;
|
||||
|
||||
FixedWidthPointer<Elf32_Sym> debug_symbols;
|
||||
} _PACKED;
|
||||
|
||||
struct preloaded_elf64_image : public preloaded_image {
|
||||
Elf64_Ehdr elf_header;
|
||||
elf64_region text_region;
|
||||
elf64_region data_region;
|
||||
|
||||
FixedWidthPointer<Elf64_Sym> syms;
|
||||
FixedWidthPointer<Elf64_Rel> rel;
|
||||
int64 rel_len;
|
||||
FixedWidthPointer<Elf64_Rela> rela;
|
||||
int64 rela_len;
|
||||
FixedWidthPointer<Elf64_Rel> pltrel;
|
||||
int64 pltrel_len;
|
||||
int64 pltrel_type;
|
||||
|
||||
FixedWidthPointer<Elf64_Sym> debug_symbols;
|
||||
} _PACKED;
|
||||
|
||||
|
||||
#if B_HAIKU_64_BIT
|
||||
typedef preloaded_elf64_image preloaded_elf_image;
|
||||
#else
|
||||
typedef preloaded_elf32_image preloaded_elf_image;
|
||||
#endif
|
||||
|
||||
extern status_t boot_elf_resolve_symbol(struct preloaded_image *image,
|
||||
struct Elf32_Sym *symbol, addr_t *symbolAddress);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#ifdef _BOOT_MODE
|
||||
extern status_t boot_elf_resolve_symbol(preloaded_elf32_image* image,
|
||||
struct Elf32_Sym* symbol, Elf32_Addr* symbolAddress);
|
||||
extern status_t boot_elf_resolve_symbol(preloaded_elf64_image* image,
|
||||
struct Elf64_Sym* symbol, Elf64_Addr* symbolAddress);
|
||||
extern void boot_elf64_set_relocation(Elf64_Addr resolveAddress,
|
||||
Elf64_Addr finalAddress);
|
||||
#endif
|
||||
|
||||
#endif /* KERNEL_BOOT_ELF_H */
|
||||
|
||||
@@ -18,7 +18,8 @@
|
||||
#include <platform_kernel_args.h>
|
||||
#include <arch_kernel_args.h>
|
||||
|
||||
#include <util/KMessage.h>
|
||||
#include <util/FixedWidthPointer.h>
|
||||
|
||||
|
||||
#define CURRENT_KERNEL_ARGS_VERSION 1
|
||||
#define MAX_KERNEL_ARGS_RANGE 20
|
||||
@@ -44,28 +45,30 @@ typedef struct kernel_args {
|
||||
uint32 kernel_args_size;
|
||||
uint32 version;
|
||||
|
||||
struct preloaded_image kernel_image;
|
||||
struct preloaded_image *preloaded_images;
|
||||
FixedWidthPointer<struct preloaded_image> kernel_image;
|
||||
FixedWidthPointer<struct preloaded_image> preloaded_images;
|
||||
|
||||
uint32 num_physical_memory_ranges;
|
||||
phys_addr_range physical_memory_range[MAX_PHYSICAL_MEMORY_RANGE];
|
||||
uint32 num_physical_allocated_ranges;
|
||||
phys_addr_range physical_allocated_range[MAX_PHYSICAL_ALLOCATED_RANGE];
|
||||
uint32 num_virtual_allocated_ranges;
|
||||
addr_range virtual_allocated_range[MAX_VIRTUAL_ALLOCATED_RANGE];
|
||||
uint32 num_kernel_args_ranges;
|
||||
addr_range kernel_args_range[MAX_KERNEL_ARGS_RANGE];
|
||||
uint64 ignored_physical_memory;
|
||||
uint32 num_physical_memory_ranges;
|
||||
addr_range physical_memory_range[MAX_PHYSICAL_MEMORY_RANGE];
|
||||
uint32 num_physical_allocated_ranges;
|
||||
addr_range physical_allocated_range[MAX_PHYSICAL_ALLOCATED_RANGE];
|
||||
uint32 num_virtual_allocated_ranges;
|
||||
addr_range virtual_allocated_range[MAX_VIRTUAL_ALLOCATED_RANGE];
|
||||
uint32 num_kernel_args_ranges;
|
||||
addr_range kernel_args_range[MAX_KERNEL_ARGS_RANGE];
|
||||
uint64 ignored_physical_memory;
|
||||
|
||||
uint32 num_cpus;
|
||||
addr_range cpu_kstack[MAX_BOOT_CPUS];
|
||||
|
||||
KMessage boot_volume;
|
||||
// boot volume KMessage data
|
||||
FixedWidthPointer<void> boot_volume;
|
||||
int32 boot_volume_size;
|
||||
|
||||
struct driver_settings_file *driver_settings;
|
||||
FixedWidthPointer<struct driver_settings_file> driver_settings;
|
||||
|
||||
struct {
|
||||
phys_addr_range physical_buffer;
|
||||
addr_range physical_buffer;
|
||||
uint32 bytes_per_row;
|
||||
uint16 width;
|
||||
uint16 height;
|
||||
@@ -73,12 +76,12 @@ typedef struct kernel_args {
|
||||
bool enabled;
|
||||
} frame_buffer;
|
||||
|
||||
void *vesa_modes;
|
||||
FixedWidthPointer<void> vesa_modes;
|
||||
uint16 vesa_modes_size;
|
||||
uint8 vesa_capabilities;
|
||||
void *edid_info;
|
||||
FixedWidthPointer<void> edid_info;
|
||||
|
||||
void *debug_output;
|
||||
FixedWidthPointer<void> debug_output;
|
||||
uint32 debug_size;
|
||||
bool keep_debug_output_buffer;
|
||||
|
||||
@@ -86,8 +89,8 @@ typedef struct kernel_args {
|
||||
arch_kernel_args arch_args;
|
||||
|
||||
// bootsplash data
|
||||
uint8 *boot_splash;
|
||||
FixedWidthPointer<uint8> boot_splash;
|
||||
|
||||
} kernel_args;
|
||||
} _PACKED kernel_args;
|
||||
|
||||
#endif /* KERNEL_BOOT_KERNEL_ARGS_H */
|
||||
|
||||
@@ -10,8 +10,9 @@
|
||||
#endif
|
||||
|
||||
|
||||
#include <apm.h>
|
||||
#include <arch/x86/apm.h>
|
||||
#include <bios_drive.h>
|
||||
#include <util/FixedWidthPointer.h>
|
||||
|
||||
|
||||
// must match SMP_MAX_CPUS in arch_smp.h
|
||||
@@ -25,9 +26,10 @@
|
||||
typedef struct {
|
||||
uint16 serial_base_ports[MAX_SERIAL_PORTS];
|
||||
|
||||
bios_drive *drives; // this does not contain the boot drive
|
||||
FixedWidthPointer<bios_drive> drives;
|
||||
// this does not contain the boot drive
|
||||
|
||||
apm_info apm;
|
||||
} platform_kernel_args;
|
||||
} _PACKED platform_kernel_args;
|
||||
|
||||
#endif /* KERNEL_BOOT_PLATFORM_BIOS_IA32_KERNEL_ARGS_H */
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright 2011, François Revol, [email protected].
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef KERNEL_BOOT_PLATFORM_CFE_CFE_H
|
||||
#define KERNEL_BOOT_PLATFORM_CFE_CFE_H
|
||||
|
||||
|
||||
#include <SupportDefs.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define CFE_EPTSEAL 0x43464531 /* 'CFE1' */
|
||||
#define CFE_MAGIC CFE_EPTSEAL
|
||||
|
||||
// cfe/include/cfe_timer.h
|
||||
#define CFE_HZ 10
|
||||
|
||||
/* CFE sources declare this separately in cfe_api.h */
|
||||
|
||||
/* (let's hope it's always built-in,
|
||||
unlike u-boot's API which never is... */
|
||||
|
||||
#define CFE_FLG_COLDSTART 0x00000000
|
||||
#define CFE_FLG_WARMSTART 0x00000001
|
||||
|
||||
#define CFE_STDHANDLE_CONSOLE 0
|
||||
|
||||
int cfe_init(uint64 handle, uint64 entry);
|
||||
|
||||
int cfe_exit(int32 warm, int32 status);
|
||||
uint64 cfe_getticks(void);
|
||||
|
||||
int cfe_enumdev(int idx, char *name, int namelen);
|
||||
|
||||
int cfe_getstdhandle(int flag);
|
||||
int cfe_open(const char *name);
|
||||
int cfe_close(int handle);
|
||||
|
||||
int cfe_readblk(int handle, int64 offset, void *buffer, int length);
|
||||
int cfe_writeblk(int handle, int64 offset, const void *buffer, int length);
|
||||
|
||||
#define CFE_OK 0
|
||||
#define CFE_ERR -1
|
||||
|
||||
status_t cfe_error(int32 err);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* KERNEL_BOOT_PLATFORM_CFE_CFE_H */
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright 2003, Axel Dörfler, [email protected]. All rights reserved.
|
||||
* Distributed under the terms of the OpenBeOS License.
|
||||
*/
|
||||
#ifndef KERNEL_BOOT_PLATFORM_CFE_ARCH_H
|
||||
#define KERNEL_BOOT_PLATFORM_CFE_ARCH_H
|
||||
|
||||
|
||||
#include <SupportDefs.h>
|
||||
|
||||
struct kernel_args;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* memory management */
|
||||
|
||||
extern status_t arch_set_callback(void);
|
||||
extern void *arch_mmu_allocate(void *address, size_t size,
|
||||
uint8 protection, bool exactAddress);
|
||||
extern status_t arch_mmu_free(void *address, size_t size);
|
||||
extern status_t arch_mmu_init(void);
|
||||
|
||||
/* CPU */
|
||||
|
||||
extern status_t boot_arch_cpu_init(void);
|
||||
|
||||
/* kernel start */
|
||||
|
||||
status_t arch_start_kernel(struct kernel_args *kernelArgs,
|
||||
addr_t kernelEntry, addr_t kernelStackTop);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* KERNEL_BOOT_PLATFORM_CFE_ARCH_H */
|
||||
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright 2003, Axel Dörfler, [email protected]. All rights reserved.
|
||||
* Distributed under the terms of the OpenBeOS License.
|
||||
*/
|
||||
#ifndef KERNEL_BOOT_PLATFORM_CFE_KERNEL_ARGS_H
|
||||
#define KERNEL_BOOT_PLATFORM_CFE_KERNEL_ARGS_H
|
||||
|
||||
#ifndef KERNEL_BOOT_KERNEL_ARGS_H
|
||||
# error This file is included from <boot/kernel_args.h> only
|
||||
#endif
|
||||
|
||||
// must match SMP_MAX_CPUS in arch_smp.h
|
||||
#define MAX_BOOT_CPUS 4
|
||||
#define MAX_PHYSICAL_MEMORY_RANGE 4
|
||||
#define MAX_PHYSICAL_ALLOCATED_RANGE 8
|
||||
#define MAX_VIRTUAL_ALLOCATED_RANGE 32
|
||||
|
||||
|
||||
typedef struct {
|
||||
uint64 cfe_entry; // pointer but always 64bit
|
||||
//XXX:char rtc_path[128];
|
||||
} platform_kernel_args;
|
||||
|
||||
#endif /* KERNEL_BOOT_PLATFORM_CFE_KERNEL_ARGS_H */
|
||||
@@ -0,0 +1,15 @@
|
||||
/*
|
||||
* Copyright 2003, Axel Dörfler, [email protected]. All rights reserved.
|
||||
* Distributed under the terms of the OpenBeOS License.
|
||||
*/
|
||||
#ifndef KERNEL_BOOT_PLATFORM_CFE_STAGE2_ARGS_H
|
||||
#define KERNEL_BOOT_PLATFORM_CFE_STAGE2_ARGS_H
|
||||
|
||||
#ifndef KERNEL_BOOT_STAGE2_ARGS_H
|
||||
# error This file is included from <boot/stage2_args.h> only
|
||||
#endif
|
||||
|
||||
struct platform_stage2_args {
|
||||
};
|
||||
|
||||
#endif /* KERNEL_BOOT_PLATFORM_CFE_STAGE2_ARGS_H */
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright 2003, Axel Dörfler, [email protected]. All rights reserved.
|
||||
* Distributed under the terms of the OpenBeOS License.
|
||||
* Copyright 2011-2012, Haiku Inc. All rights reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef KERNEL_BOOT_PLATFORM_PI_ARCH_H
|
||||
#define KERNEL_BOOT_PLATFORM_PI_ARCH_H
|
||||
|
||||
|
||||
#include <SupportDefs.h>
|
||||
|
||||
|
||||
struct kernel_args;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
/* memory management */
|
||||
extern status_t arch_set_callback(void);
|
||||
extern void *arch_mmu_allocate(void *address, size_t size, uint8 protection,
|
||||
bool exactAddress);
|
||||
extern status_t arch_mmu_free(void *address, size_t size);
|
||||
extern status_t arch_mmu_init(void);
|
||||
|
||||
/* CPU */
|
||||
extern status_t boot_arch_cpu_init(void);
|
||||
|
||||
/* kernel start */
|
||||
status_t arch_start_kernel(struct kernel_args *kernelArgs, addr_t kernelEntry,
|
||||
addr_t kernelStackTop);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* KERNEL_BOOT_PLATFORM_PI_ARCH_H */
|
||||
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright 2012, Haiku Inc. All rights reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef _PLATFORM_DEBUG_H_
|
||||
#define _PLATFORM_DEBUG_H_
|
||||
|
||||
#define DEBUG_DELAY_SHORT 200
|
||||
#define DEBUG_DELAY_MEDIUM 500
|
||||
#define DEBUG_DELAY_LONG 1000
|
||||
|
||||
void debug_delay(int time);
|
||||
void debug_set_led(bool on);
|
||||
|
||||
void debug_toggle_led(int count, int delay = DEBUG_DELAY_MEDIUM);
|
||||
// Toggles the led count times with the delay for both on and off time.
|
||||
|
||||
void debug_blink_number(int number);
|
||||
// Implements a blink pattern to output arbitrary numbers:
|
||||
//
|
||||
// 1. Led turns off and stays off for a long delay.
|
||||
// 2. Led blinks x times with a short delay, where x is the current
|
||||
// decimal place + 1 (so 0 values are easier to see).
|
||||
// 3. Led stays off for a long delay to indicate the move to the next
|
||||
// decimal place and step 2. is repeated until all the rest of the
|
||||
// number is 0.
|
||||
// 4. The led turns on and stays on with a long delay to indicate finish.
|
||||
// 5. Led state is reset to the original value.
|
||||
//
|
||||
// The lowest decimal is output first, so the number will be reversed. As an
|
||||
// example the number 205 would be blinked as follows:
|
||||
// long off (start indicator), 6 blinks (indicating 5),
|
||||
// long off (moving to next decimal), 1 blink (indicating 0)
|
||||
// long off (moving to next decimal), 3 blinks (indicating 2)
|
||||
// long on (finish indicator)
|
||||
|
||||
void debug_halt();
|
||||
// Stalls execution in an endless loop.
|
||||
|
||||
void debug_assert(bool condition);
|
||||
// Flashes the led 20 times rapidly and stalls execution if the condition
|
||||
// isn't met.
|
||||
|
||||
#endif // _PLATFORM_DEBUG_H_
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Copyright 2009-2011, Haiku Inc. All rights reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef KERNEL_BOOT_PLATFORM_PI_KERNEL_ARGS_H
|
||||
#define KERNEL_BOOT_PLATFORM_PI_KERNEL_ARGS_H
|
||||
|
||||
#ifndef KERNEL_BOOT_KERNEL_ARGS_H
|
||||
# error This file is included from <boot/kernel_args.h> only
|
||||
#endif
|
||||
|
||||
// must match SMP_MAX_CPUS in arch_smp.h
|
||||
#define MAX_BOOT_CPUS 1
|
||||
#define MAX_PHYSICAL_MEMORY_RANGE 4
|
||||
#define MAX_PHYSICAL_ALLOCATED_RANGE 8
|
||||
#define MAX_VIRTUAL_ALLOCATED_RANGE 32
|
||||
|
||||
|
||||
typedef struct {
|
||||
char dummy;
|
||||
} platform_kernel_args;
|
||||
|
||||
#endif /* KERNEL_BOOT_PLATFORM_PI_KERNEL_ARGS_H */
|
||||
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Copyright 2009-2012, Haiku Inc. All rights reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef KERNEL_BOOT_PLATFORM_PI_STAGE2_H
|
||||
#define KERNEL_BOOT_PLATFORM_PI_STAGE2_H
|
||||
|
||||
#ifndef KERNEL_BOOT_STAGE2_ARGS_H
|
||||
# error This file is included from <boot/stage2_args.h> only
|
||||
#endif
|
||||
|
||||
struct platform_stage2_args {
|
||||
void *boot_tgz_data;
|
||||
uint32 boot_tgz_size;
|
||||
};
|
||||
|
||||
#endif /* KERNEL_BOOT_PLATFORM_PI_STAGE2_H */
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
** Copyright 2003, Axel Dörfler, [email protected]. All rights reserved.
|
||||
** Distributed under the terms of the OpenBeOS License.
|
||||
*/
|
||||
#ifndef KERNEL_BOOT_PLATFORM_UBOOT_ARCH_H
|
||||
#define KERNEL_BOOT_PLATFORM_UBOOT_ARCH_H
|
||||
|
||||
|
||||
#include <SupportDefs.h>
|
||||
|
||||
struct kernel_args;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* memory management */
|
||||
|
||||
extern status_t arch_set_callback(void);
|
||||
extern void *arch_mmu_allocate(void *address, size_t size, uint8 protection,
|
||||
bool exactAddress);
|
||||
extern status_t arch_mmu_free(void *address, size_t size);
|
||||
extern status_t arch_mmu_init(void);
|
||||
|
||||
/* CPU */
|
||||
|
||||
extern status_t boot_arch_cpu_init(void);
|
||||
|
||||
/* kernel start */
|
||||
|
||||
status_t arch_start_kernel(struct kernel_args *kernelArgs, addr_t kernelEntry,
|
||||
addr_t kernelStackTop);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* KERNEL_BOOT_PLATFORM_UBOOT_ARCH_H */
|
||||
@@ -12,6 +12,8 @@
|
||||
struct platform_stage2_args {
|
||||
void *boot_tgz_data;
|
||||
uint32 boot_tgz_size;
|
||||
void *fdt_data;
|
||||
uint32 fdt_size;
|
||||
};
|
||||
|
||||
#endif /* KERNEL_BOOT_PLATFORM_UBOOT_STAGE2_H */
|
||||
|
||||
@@ -8,10 +8,12 @@
|
||||
|
||||
#include <boot/kernel_args.h>
|
||||
|
||||
#include <util/KMessage.h>
|
||||
|
||||
struct stage2_args;
|
||||
|
||||
extern struct kernel_args gKernelArgs;
|
||||
extern KMessage gBootVolume;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
Reference in New Issue
Block a user