* Renamed remaining .c files to .cpp, and made the necessary changes to let
them compile still. * Some cleanup in ARM's start2.cpp. * m68k stuff is still missing, though. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37249 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -26,7 +26,7 @@ local genericPlatformSources =
|
|||||||
|
|
||||||
KernelMergeObject boot_platform_bios_ia32.o :
|
KernelMergeObject boot_platform_bios_ia32.o :
|
||||||
shell.S
|
shell.S
|
||||||
start.c
|
start.cpp
|
||||||
debug.cpp
|
debug.cpp
|
||||||
bios.S
|
bios.S
|
||||||
console.cpp
|
console.cpp
|
||||||
|
|||||||
+6
-6
@@ -35,8 +35,8 @@ extern void (*__ctor_end)(void);
|
|||||||
extern uint8 __bss_start;
|
extern uint8 __bss_start;
|
||||||
extern uint8 _end;
|
extern uint8 _end;
|
||||||
|
|
||||||
extern int main(stage2_args *args);
|
extern "C" int main(stage2_args *args);
|
||||||
void _start(void);
|
extern "C" void _start(void);
|
||||||
|
|
||||||
|
|
||||||
uint32 sBootOptions;
|
uint32 sBootOptions;
|
||||||
@@ -60,7 +60,7 @@ call_ctors(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint32
|
extern "C" uint32
|
||||||
platform_boot_options(void)
|
platform_boot_options(void)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
@@ -71,7 +71,7 @@ platform_boot_options(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
extern "C" void
|
||||||
platform_start_kernel(void)
|
platform_start_kernel(void)
|
||||||
{
|
{
|
||||||
static struct kernel_args *args = &gKernelArgs;
|
static struct kernel_args *args = &gKernelArgs;
|
||||||
@@ -103,7 +103,7 @@ platform_start_kernel(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
extern "C" void
|
||||||
platform_exit(void)
|
platform_exit(void)
|
||||||
{
|
{
|
||||||
// reset the system using the keyboard controller
|
// reset the system using the keyboard controller
|
||||||
@@ -111,7 +111,7 @@ platform_exit(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
extern "C" void
|
||||||
_start(void)
|
_start(void)
|
||||||
{
|
{
|
||||||
stage2_args args;
|
stage2_args args;
|
||||||
@@ -4,7 +4,7 @@ SubDirC++Flags -D_BOOT_MODE -fno-rtti ;
|
|||||||
|
|
||||||
KernelMergeObject boot_platform_openfirmware.o :
|
KernelMergeObject boot_platform_openfirmware.o :
|
||||||
console.cpp
|
console.cpp
|
||||||
debug.c
|
debug.cpp
|
||||||
devices.cpp
|
devices.cpp
|
||||||
Handle.cpp
|
Handle.cpp
|
||||||
heap.cpp
|
heap.cpp
|
||||||
@@ -12,7 +12,7 @@ KernelMergeObject boot_platform_openfirmware.o :
|
|||||||
mmu.cpp
|
mmu.cpp
|
||||||
network.cpp
|
network.cpp
|
||||||
real_time_clock.cpp
|
real_time_clock.cpp
|
||||||
start.c
|
start.cpp
|
||||||
support.cpp
|
support.cpp
|
||||||
video.cpp
|
video.cpp
|
||||||
|
|
||||||
|
|||||||
+8
-10
@@ -1,22 +1,20 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
|
* Copyright 2003-2010, Axel Dörfler, axeld@pinc-software.de.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
#include <boot/platform.h>
|
#include <boot/platform.h>
|
||||||
#include <boot/stdio.h>
|
#include <boot/stdio.h>
|
||||||
#include <platform/openfirmware/openfirmware.h>
|
#include <platform/openfirmware/openfirmware.h>
|
||||||
#include <stdarg.h>
|
|
||||||
|
|
||||||
|
|
||||||
/** ToDo: this works only after console_init() was called.
|
extern "C" void
|
||||||
* But it probably should do something before as well...
|
panic(const char* format, ...)
|
||||||
*/
|
|
||||||
|
|
||||||
void
|
|
||||||
panic(const char *format, ...)
|
|
||||||
{
|
{
|
||||||
|
// TODO: this works only after console_init() was called.
|
||||||
va_list list;
|
va_list list;
|
||||||
|
|
||||||
puts("*** PANIC ***");
|
puts("*** PANIC ***");
|
||||||
@@ -29,8 +27,8 @@ panic(const char *format, ...)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
extern "C" void
|
||||||
dprintf(const char *format, ...)
|
dprintf(const char* format, ...)
|
||||||
{
|
{
|
||||||
va_list list;
|
va_list list;
|
||||||
|
|
||||||
+10
-10
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2003-2005, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
|
* Copyright 2003-2010, Axel Dörfler, axeld@pinc-software.de.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -21,8 +21,9 @@
|
|||||||
#define HEAP_SIZE 65536
|
#define HEAP_SIZE 65536
|
||||||
|
|
||||||
|
|
||||||
void _start(uint32 _unused1, uint32 _unused2, void *openFirmwareEntry);
|
extern "C" void _start(uint32 _unused1, uint32 _unused2,
|
||||||
void start(void *openFirmwareEntry);
|
void *openFirmwareEntry);
|
||||||
|
extern "C" void start(void *openFirmwareEntry);
|
||||||
|
|
||||||
// GCC defined globals
|
// GCC defined globals
|
||||||
extern void (*__ctor_list)(void);
|
extern void (*__ctor_list)(void);
|
||||||
@@ -79,7 +80,7 @@ determine_machine(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
extern "C" void
|
||||||
platform_start_kernel(void)
|
platform_start_kernel(void)
|
||||||
{
|
{
|
||||||
addr_t kernelEntry = gKernelArgs.kernel_image.elf_header.e_entry;
|
addr_t kernelEntry = gKernelArgs.kernel_image.elf_header.e_entry;
|
||||||
@@ -100,14 +101,14 @@ platform_start_kernel(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
extern "C" void
|
||||||
platform_exit(void)
|
platform_exit(void)
|
||||||
{
|
{
|
||||||
of_interpret("reset-all", 0, 0);
|
of_interpret("reset-all", 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint32
|
extern "C" uint32
|
||||||
platform_boot_options(void)
|
platform_boot_options(void)
|
||||||
{
|
{
|
||||||
// ToDo: implement me!
|
// ToDo: implement me!
|
||||||
@@ -115,7 +116,7 @@ platform_boot_options(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
extern "C" void
|
||||||
_start(uint32 _unused1, uint32 _unused3, void *openFirmwareEntry)
|
_start(uint32 _unused1, uint32 _unused3, void *openFirmwareEntry)
|
||||||
{
|
{
|
||||||
// According to the PowerPC bindings, OpenFirmware should have created
|
// According to the PowerPC bindings, OpenFirmware should have created
|
||||||
@@ -129,7 +130,7 @@ _start(uint32 _unused1, uint32 _unused3, void *openFirmwareEntry)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
extern "C" void
|
||||||
start(void *openFirmwareEntry)
|
start(void *openFirmwareEntry)
|
||||||
{
|
{
|
||||||
char bootargs[512];
|
char bootargs[512];
|
||||||
@@ -139,7 +140,7 @@ start(void *openFirmwareEntry)
|
|||||||
args.heap_size = HEAP_SIZE;
|
args.heap_size = HEAP_SIZE;
|
||||||
args.arguments = NULL;
|
args.arguments = NULL;
|
||||||
|
|
||||||
of_init(openFirmwareEntry);
|
of_init((int (*)(void*))openFirmwareEntry);
|
||||||
|
|
||||||
// check for arguments
|
// check for arguments
|
||||||
if (of_getprop(gChosen, "bootargs", bootargs, sizeof(bootargs)) != OF_FAILED) {
|
if (of_getprop(gChosen, "bootargs", bootargs, sizeof(bootargs)) != OF_FAILED) {
|
||||||
@@ -169,4 +170,3 @@ start(void *openFirmwareEntry)
|
|||||||
|
|
||||||
of_exit();
|
of_exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ local genericPlatformSources =
|
|||||||
;
|
;
|
||||||
|
|
||||||
local bios_ia32_src =
|
local bios_ia32_src =
|
||||||
start.c
|
start.cpp
|
||||||
debug.cpp
|
debug.cpp
|
||||||
bios.S
|
bios.S
|
||||||
console.cpp
|
console.cpp
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ UsePrivateHeaders [ FDirName graphics common ] ;
|
|||||||
UsePrivateHeaders [ FDirName graphics vesa ] ;
|
UsePrivateHeaders [ FDirName graphics vesa ] ;
|
||||||
UsePrivateHeaders [ FDirName storage ] ;
|
UsePrivateHeaders [ FDirName storage ] ;
|
||||||
|
|
||||||
# XXX: FIXME! move this to arch/arm !
|
# TODO: move this to arch/arm !
|
||||||
|
|
||||||
UsePrivateHeaders [ FDirName kernel arch arm board $(TARGET_BOOT_BOARD) ] ;
|
UsePrivateHeaders [ FDirName kernel arch arm board $(TARGET_BOOT_BOARD) ] ;
|
||||||
|
|
||||||
@@ -36,8 +36,8 @@ local genericPlatformSources =
|
|||||||
|
|
||||||
KernelMergeObject boot_platform_u-boot.o :
|
KernelMergeObject boot_platform_u-boot.o :
|
||||||
shell.S
|
shell.S
|
||||||
start2.c
|
start2.cpp
|
||||||
debug.c
|
debug.cpp
|
||||||
console.cpp
|
console.cpp
|
||||||
serial.cpp
|
serial.cpp
|
||||||
devices.cpp
|
devices.cpp
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2004-2007, Axel Dörfler, axeld@pinc-software.de.
|
* Copyright 2004-2010, Axel Dörfler, axeld@pinc-software.de.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -14,8 +14,8 @@
|
|||||||
|
|
||||||
/*! This works only after console_init() was called.
|
/*! This works only after console_init() was called.
|
||||||
*/
|
*/
|
||||||
void
|
extern "C" void
|
||||||
panic(const char *format, ...)
|
panic(const char* format, ...)
|
||||||
{
|
{
|
||||||
va_list list;
|
va_list list;
|
||||||
|
|
||||||
@@ -35,8 +35,8 @@ panic(const char *format, ...)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
extern "C" void
|
||||||
dprintf(const char *format, ...)
|
dprintf(const char* format, ...)
|
||||||
{
|
{
|
||||||
char buffer[512];
|
char buffer[512];
|
||||||
va_list list;
|
va_list list;
|
||||||
@@ -54,4 +54,3 @@ dprintf(const char *format, ...)
|
|||||||
if (platform_boot_options() & BOOT_OPTION_DEBUG_OUTPUT)
|
if (platform_boot_options() & BOOT_OPTION_DEBUG_OUTPUT)
|
||||||
fprintf(stderr, "%s", buffer);
|
fprintf(stderr, "%s", buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
+52
-45
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2003-2008, Axel Dörfler, axeld@pinc-software.de.
|
* Copyright 2003-2010, Axel Dörfler, axeld@pinc-software.de.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -7,6 +7,7 @@
|
|||||||
#include "serial.h"
|
#include "serial.h"
|
||||||
#include "console.h"
|
#include "console.h"
|
||||||
#include "cpu.h"
|
#include "cpu.h"
|
||||||
|
#include "mmu.h"
|
||||||
#include "smp.h"
|
#include "smp.h"
|
||||||
#include "uimage.h"
|
#include "uimage.h"
|
||||||
#include "keyboard.h"
|
#include "keyboard.h"
|
||||||
@@ -17,26 +18,43 @@
|
|||||||
#include <boot/stage2.h>
|
#include <boot/stage2.h>
|
||||||
#include <arch/cpu.h>
|
#include <arch/cpu.h>
|
||||||
|
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
|
||||||
#define HEAP_SIZE (128 * 1024)
|
#define HEAP_SIZE (128 * 1024)
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct uboot_arm_gd {
|
||||||
|
struct board_data *bd;
|
||||||
|
uint32 flags;
|
||||||
|
uint32 baudrate;
|
||||||
|
uint32 have_console;
|
||||||
|
uint32 reloc_off;
|
||||||
|
uint32 env_addr;
|
||||||
|
uint32 env_valid;
|
||||||
|
uint32 fb_base;
|
||||||
|
} uboot_arm_gd;
|
||||||
|
|
||||||
|
|
||||||
// GCC defined globals
|
// GCC defined globals
|
||||||
extern void (*__ctor_list)(void);
|
extern void (*__ctor_list)(void);
|
||||||
extern void (*__ctor_end)(void);
|
extern void (*__ctor_end)(void);
|
||||||
extern uint8 __bss_start;
|
extern uint8 __bss_start;
|
||||||
extern uint8 _end;
|
extern uint8 _end;
|
||||||
|
|
||||||
extern int main(stage2_args *args);
|
extern "C" int main(stage2_args *args);
|
||||||
extern void _start(void);
|
extern "C" void _start(void);
|
||||||
extern int start_raw(int argc, char **argv);
|
extern "C" int start_raw(int argc, const char **argv);
|
||||||
extern void dump_uimage(struct image_header *image);
|
extern "C" void dump_uimage(struct image_header *image);
|
||||||
|
|
||||||
extern struct image_header *gUImage;
|
extern struct image_header *gUImage;
|
||||||
|
extern uboot_arm_gd *gUBootGlobalData;
|
||||||
|
extern uint8 gUBootOS;
|
||||||
|
|
||||||
|
|
||||||
uint32 sBootOptions;
|
register volatile uboot_arm_gd *gGD asm ("r8");
|
||||||
|
|
||||||
|
static uint32 sBootOptions;
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -58,14 +76,14 @@ call_ctors(void)
|
|||||||
|
|
||||||
|
|
||||||
/* needed for libgcc unwind XXX */
|
/* needed for libgcc unwind XXX */
|
||||||
void
|
extern "C" void
|
||||||
abort(void)
|
abort(void)
|
||||||
{
|
{
|
||||||
panic("abort");
|
panic("abort");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
extern "C" void
|
||||||
platform_start_kernel(void)
|
platform_start_kernel(void)
|
||||||
{
|
{
|
||||||
static struct kernel_args *args = &gKernelArgs;
|
static struct kernel_args *args = &gKernelArgs;
|
||||||
@@ -83,11 +101,11 @@ platform_start_kernel(void)
|
|||||||
dprintf("kernel entry at %lx\n",
|
dprintf("kernel entry at %lx\n",
|
||||||
gKernelArgs.kernel_image.elf_header.e_entry);
|
gKernelArgs.kernel_image.elf_header.e_entry);
|
||||||
|
|
||||||
|
asm("MOV sp, %[adr]"::[adr] "r" (stackTop));
|
||||||
asm( "MOV sp, %[adr]"::[adr] "r" (stackTop) );
|
asm("MOV r0, %[args]"::[args] "r" (args));
|
||||||
asm( "MOV r0, %[args]"::[args] "r" (args) );
|
asm("MOV r1, #0"::);
|
||||||
asm( "MOV r1, #0"::);
|
asm("MOV pc, %[entry]"::[entry] "r"
|
||||||
asm( "MOV pc, %[entry]"::[entry] "r" (gKernelArgs.kernel_image.elf_header.e_entry));
|
(gKernelArgs.kernel_image.elf_header.e_entry));
|
||||||
|
|
||||||
/* asm("movl %0, %%eax; " // move stack out of way
|
/* asm("movl %0, %%eax; " // move stack out of way
|
||||||
"movl %%eax, %%esp; "
|
"movl %%eax, %%esp; "
|
||||||
@@ -103,47 +121,34 @@ platform_start_kernel(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
extern "C" void
|
||||||
platform_exit(void)
|
platform_exit(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
typedef struct uboot_arm_gd {
|
extern "C" int
|
||||||
struct board_data *bd;
|
start_netbsd(struct board_info *bd, struct image_header *image,
|
||||||
uint32 flags;
|
const char *consdev, const char *cmdline)
|
||||||
uint32 baudrate;
|
|
||||||
uint32 have_console;
|
|
||||||
uint32 reloc_off;
|
|
||||||
uint32 env_addr;
|
|
||||||
uint32 env_valid;
|
|
||||||
uint32 fb_base;
|
|
||||||
} uboot_arm_gd;
|
|
||||||
|
|
||||||
register volatile uboot_arm_gd *gGD asm ("r8");
|
|
||||||
extern uboot_arm_gd *gUBootGlobalData;
|
|
||||||
extern uint8 gUBootOS;
|
|
||||||
|
|
||||||
int
|
|
||||||
start_netbsd(struct board_info *bd, struct image_header *image, const char *consdev,
|
|
||||||
const char *cmdline)
|
|
||||||
{
|
{
|
||||||
const char *argv[] = { "haiku", cmdline };
|
const char *argv[] = { "haiku", cmdline };
|
||||||
int argc = 1;
|
int argc = 1;
|
||||||
if (cmdline)
|
if (cmdline)
|
||||||
argc++;
|
argc++;
|
||||||
gUImage = image;
|
gUImage = image;
|
||||||
start_raw(argc, argv);
|
return start_raw(argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
|
extern "C" int
|
||||||
start_linux(int argc, int archnum, void *atags)
|
start_linux(int argc, int archnum, void *atags)
|
||||||
{
|
{
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
extern "C" int
|
||||||
start_raw(int argc, char **argv)
|
start_raw(int argc, const char **argv)
|
||||||
{
|
{
|
||||||
stage2_args args;
|
stage2_args args;
|
||||||
|
|
||||||
@@ -154,18 +159,18 @@ start_raw(int argc, char **argv)
|
|||||||
args.arguments = NULL;
|
args.arguments = NULL;
|
||||||
args.platform.boot_tgz_data = NULL;
|
args.platform.boot_tgz_data = NULL;
|
||||||
args.platform.boot_tgz_size = 0;
|
args.platform.boot_tgz_size = 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
serial_init();
|
serial_init();
|
||||||
console_init();
|
console_init();
|
||||||
cpu_init();
|
cpu_init();
|
||||||
|
|
||||||
// if we get passed a uimage, try to find the second blob
|
// if we get passed a uimage, try to find the second blob
|
||||||
if (gUImage && image_multi_getimg(gUImage, 1, &args.platform.boot_tgz_data,
|
if (gUImage != NULL
|
||||||
&args.platform.boot_tgz_size))
|
&& image_multi_getimg(gUImage, 1, (uint32*)&args.platform.boot_tgz_data,
|
||||||
dprintf("Found boot tgz @ %p, %d bytes\n", args.platform.boot_tgz_data,
|
&args.platform.boot_tgz_size)) {
|
||||||
args.platform.boot_tgz_size);
|
dprintf("Found boot tgz @ %p, %" B_PRIu32 " bytes\n",
|
||||||
|
args.platform.boot_tgz_data, args.platform.boot_tgz_size);
|
||||||
|
}
|
||||||
|
|
||||||
{ //DEBUG:
|
{ //DEBUG:
|
||||||
int i;
|
int i;
|
||||||
@@ -175,7 +180,7 @@ start_raw(int argc, char **argv)
|
|||||||
dprintf("os: %d\n", gUBootOS);
|
dprintf("os: %d\n", gUBootOS);
|
||||||
dprintf("gd @ %p\n", gGD);
|
dprintf("gd @ %p\n", gGD);
|
||||||
dprintf("gd->bd @ %p\n", gGD->bd);
|
dprintf("gd->bd @ %p\n", gGD->bd);
|
||||||
dprintf("fb_base %p\n", gGD->fb_base);
|
dprintf("fb_base %p\n", (void*)gGD->fb_base);
|
||||||
dprintf("uimage @ %p\n", gUImage);
|
dprintf("uimage @ %p\n", gUImage);
|
||||||
if (gUImage)
|
if (gUImage)
|
||||||
dump_uimage(gUImage);
|
dump_uimage(gUImage);
|
||||||
@@ -193,9 +198,11 @@ start_raw(int argc, char **argv)
|
|||||||
serial_enable();
|
serial_enable();
|
||||||
|
|
||||||
main(&args);
|
main(&args);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32
|
|
||||||
|
extern "C" uint32
|
||||||
platform_boot_options(void)
|
platform_boot_options(void)
|
||||||
{
|
{
|
||||||
return sBootOptions;
|
return sBootOptions;
|
||||||
Reference in New Issue
Block a user