diff --git a/repos/base/lib/mk/base-common.inc b/repos/base/lib/mk/base-common.inc
index 7f5f1d6dd8..28da804027 100644
--- a/repos/base/lib/mk/base-common.inc
+++ b/repos/base/lib/mk/base-common.inc
@@ -23,7 +23,6 @@ SRC_CC += rpc_entrypoint.cc
SRC_CC += signal_common.cc
SRC_CC += sleep.cc
SRC_CC += entrypoint.cc
-SRC_CC += component.cc
SRC_CC += region_map_client.cc
SRC_CC += rm_session_client.cc
SRC_CC += stack_allocator.cc
diff --git a/repos/base/lib/mk/base.inc b/repos/base/lib/mk/base.inc
index 9a42798af0..d81658b6b7 100644
--- a/repos/base/lib/mk/base.inc
+++ b/repos/base/lib/mk/base.inc
@@ -1,3 +1,4 @@
+SRC_CC += component.cc
SRC_CC += default_log.cc
SRC_CC += platform.cc stack_area.cc
SRC_CC += rpc_cap_alloc.cc heartbeat.cc
diff --git a/repos/base/src/core/main.cc b/repos/base/src/core/main.cc
index 8852f14386..a03b68f955 100644
--- a/repos/base/src/core/main.cc
+++ b/repos/base/src/core/main.cc
@@ -15,6 +15,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -216,11 +217,15 @@ namespace Genode {
}
-int main()
+/* expected by entrypoint.cc */
+Genode::size_t Component::stack_size() { return 64*1024; }
+
+
+void Genode::bootstrap_component()
{
- /**
- * Disable tracing within core because it is currently not fully implemented.
- */
+ init_exception_handling(*core_env().pd_session(), core_env().local_rm());
+
+ /* disable tracing within core because it is not fully implemented */
inhibit_tracing = true;
log("Genode ", Genode::version_string);
@@ -287,12 +292,12 @@ int main()
if (avail_ram_quota < preserved_ram_quota) {
error("core preservation exceeds platform RAM limit");
- return -1;
+ return;
}
if (avail_cap_quota < preserved_cap_quota) {
error("core preservation exceeds platform cap quota limit");
- return -1;
+ return;
}
Ram_quota const init_ram_quota { avail_ram_quota - preserved_ram_quota };
@@ -319,5 +324,4 @@ int main()
platform().wait_for_exit();
init.destruct();
- return 0;
}
diff --git a/repos/base/src/core/signal_transmitter_proxy.cc b/repos/base/src/core/signal_transmitter_proxy.cc
index 722dc496c2..9e9a0f3f79 100644
--- a/repos/base/src/core/signal_transmitter_proxy.cc
+++ b/repos/base/src/core/signal_transmitter_proxy.cc
@@ -30,19 +30,10 @@ using namespace Core;
static Constructible delivery_proxy;
-/*
- * Entrypoint that serves the 'Signal_source' RPC objects
- */
-static Rpc_entrypoint *_ep;
-
-
-void Core::init_core_signal_transmitter(Rpc_entrypoint &ep) { _ep = &ep; }
-
-
-void Genode::init_signal_transmitter(Env &)
+void Core::init_core_signal_transmitter(Rpc_entrypoint &ep)
{
- if (!delivery_proxy.constructed() && _ep)
- delivery_proxy.construct(*_ep);
+ if (!delivery_proxy.constructed())
+ delivery_proxy.construct(ep);
}
diff --git a/repos/base/src/include/base/internal/globals.h b/repos/base/src/include/base/internal/globals.h
index a9a30add48..618a6183b4 100644
--- a/repos/base/src/include/base/internal/globals.h
+++ b/repos/base/src/include/base/internal/globals.h
@@ -57,6 +57,7 @@ namespace Genode {
Id_space &env_session_id_space();
Env &internal_env();
+ void bootstrap_component();
void binary_ready_hook_for_platform();
}