1 /*
2 * Copyright 2003-2010, Axel Dörfler, axeld@pinc-software.de.
3 * Copyright 2011, Alexander von Gluck, kallisti5@unixzen.com
4 * Copyright 2019, Adrien Destugues, pulkomandy@pulkomandy.tk
5 * Distributed under the terms of the MIT License.
6 */
7
8
9 #include "start.h"
10
11 #include "machine.h"
12
13
14 void
determine_machine(void)15 determine_machine(void)
16 {
17 gMachine = MACHINE_UNKNOWN;
18 }
19
20
21 extern "C" void __attribute__((section(".text.start")))
_start(int _reserved,int _argstr,int _arglen,int _unknown,void * openFirmwareEntry)22 _start(int _reserved, int _argstr, int _arglen, int _unknown,
23 void *openFirmwareEntry)
24 {
25 // According to the sparc bindings, OpenFirmware should have created
26 // a stack of 8kB or higher for us at this point, and window traps are
27 // operational so it's possible to call the openFirmwareEntry safely.
28 // The bss segment is already cleared by the firmware as well.
29
30 call_ctors();
31 // call C++ constructors before doing anything else
32
33 start(openFirmwareEntry);
34 }
35
36