diff --git a/base-nova/include/nova/syscall-generic.h b/base-nova/include/nova/syscall-generic.h index e82a533c97..07cf248885 100644 --- a/base-nova/include/nova/syscall-generic.h +++ b/base-nova/include/nova/syscall-generic.h @@ -529,7 +529,6 @@ namespace Nova { PT_SEL_STARTUP = 0x1e, PT_SEL_RECALL = 0x1f, PD_SEL = 0x1b, - PD_SEL_CAP_LOCK = 0x1c, /* convention on Genode */ SM_SEL_EC_CLIENT = 0x1c, /* convention on Genode */ SM_SEL_EC = 0x1d, /* convention on Genode */ }; diff --git a/base-nova/src/base/env/cap_sel_alloc.cc b/base-nova/src/base/env/cap_sel_alloc.cc index 0ff94e051e..a4cf2c2e7d 100644 --- a/base-nova/src/base/env/cap_sel_alloc.cc +++ b/base-nova/src/base/env/cap_sel_alloc.cc @@ -24,48 +24,12 @@ using namespace Genode; - -/** - * Low-level lock to protect the allocator - * - * We cannot use a normal Genode lock because this lock is used by code - * executed prior the initialization of Genode. - */ -class Alloc_lock -{ - private: - - addr_t _sm_cap; - - public: - - /** - * Constructor - * - * \param sm_cap capability selector for the used semaphore - */ - Alloc_lock() : _sm_cap(Nova::PD_SEL_CAP_LOCK) { } - - void lock() - { - if (Nova::sm_ctrl(_sm_cap, Nova::SEMAPHORE_DOWN)) - nova_die(); - } - - void unlock() - { - if (Nova::sm_ctrl(_sm_cap, Nova::SEMAPHORE_UP)) - nova_die(); - } -}; - - /** * Return lock used to protect capability selector allocations */ -static Alloc_lock *alloc_lock() +static Genode::Lock *alloc_lock() { - static Alloc_lock alloc_lock_inst; + static Genode::Lock alloc_lock_inst; return &alloc_lock_inst; } @@ -83,7 +47,6 @@ void Cap_selector_allocator::free(addr_t cap, size_t num_caps_log2) alloc_lock()->lock(); Bit_allocator::free(cap, num_caps_log2); alloc_lock()->unlock(); - } diff --git a/base-nova/src/core/platform.cc b/base-nova/src/core/platform.cc index dcf95e22f5..b5a5c69e30 100644 --- a/base-nova/src/core/platform.cc +++ b/base-nova/src/core/platform.cc @@ -211,7 +211,6 @@ Platform::Platform() : __core_pd_sel = hip->sel_exc; /* create lock used by capability allocator */ - Nova::create_sm(Nova::PD_SEL_CAP_LOCK, __core_pd_sel, 1); Nova::create_sm(Nova::SM_SEL_EC, __core_pd_sel, 0); /* locally map the whole I/O port range */ diff --git a/base-nova/src/core/platform_thread.cc b/base-nova/src/core/platform_thread.cc index b086094242..c532974e41 100644 --- a/base-nova/src/core/platform_thread.cc +++ b/base-nova/src/core/platform_thread.cc @@ -111,7 +111,6 @@ int Platform_thread::start(void *ip, void *sp) _sel_exc_base = cap_selector_allocator()->alloc(NUM_INITIAL_PT_LOG2); addr_t pd_core_sel = Platform_pd::pd_core_sel(); - addr_t sm_alloc_sel = _sel_exc_base + PD_SEL_CAP_LOCK; addr_t sm_ec_sel = _pager->exc_pt_sel() + SM_SEL_EC_CLIENT; addr_t remap_src[] = { _pd->parent_pt_sel(), @@ -164,13 +163,6 @@ int Platform_thread::start(void *ip, void *sp) goto cleanup_base; } - /* Create lock for cap allocator selector */ - res = create_sm(sm_alloc_sel, pd_core_sel, 1); - if (res != NOVA_OK) { - PERR("could not create semaphore for capability allocator"); - goto cleanup_base; - } - pd_sel = cap_selector_allocator()->alloc(); /* create task */