mirror of
https://github.com/genodelabs/genode.git
synced 2025-06-18 15:18:20 +00:00
hw: make address variables 64-bit safe (fix #2503)
This commit is contained in:
committed by
Christian Helmuth
parent
ea46c462a4
commit
08a311b033
@ -126,7 +126,7 @@ Signal_context::~Signal_context()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Signal_context::Signal_context(Signal_receiver * const r, unsigned const imprint)
|
Signal_context::Signal_context(Signal_receiver * const r, addr_t const imprint)
|
||||||
:
|
:
|
||||||
_deliver_fe(this),
|
_deliver_fe(this),
|
||||||
_contexts_fe(this),
|
_contexts_fe(this),
|
||||||
@ -164,7 +164,7 @@ void Signal_receiver::_listen()
|
|||||||
/* create a signal data-object */
|
/* create a signal data-object */
|
||||||
typedef Genode::Signal_context * Signal_imprint;
|
typedef Genode::Signal_context * Signal_imprint;
|
||||||
auto const context = _deliver.dequeue()->object();
|
auto const context = _deliver.dequeue()->object();
|
||||||
auto const imprint =
|
Signal_imprint const imprint =
|
||||||
reinterpret_cast<Signal_imprint>(context->_imprint);
|
reinterpret_cast<Signal_imprint>(context->_imprint);
|
||||||
Signal::Data data(imprint, context->_submits);
|
Signal::Data data(imprint, context->_submits);
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ class Kernel::Signal_context : public Kernel::Object
|
|||||||
Fifo_element _deliver_fe;
|
Fifo_element _deliver_fe;
|
||||||
Fifo_element _contexts_fe;
|
Fifo_element _contexts_fe;
|
||||||
Signal_receiver * const _receiver;
|
Signal_receiver * const _receiver;
|
||||||
unsigned const _imprint;
|
addr_t const _imprint;
|
||||||
unsigned _submits;
|
unsigned _submits;
|
||||||
bool _ack;
|
bool _ack;
|
||||||
bool _killed;
|
bool _killed;
|
||||||
@ -179,7 +179,7 @@ class Kernel::Signal_context : public Kernel::Object
|
|||||||
*
|
*
|
||||||
* \throw Assign_to_receiver_failed
|
* \throw Assign_to_receiver_failed
|
||||||
*/
|
*/
|
||||||
Signal_context(Signal_receiver * const r, unsigned const imprint);
|
Signal_context(Signal_receiver * const r, addr_t const imprint);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Submit the signal
|
* Submit the signal
|
||||||
|
@ -590,8 +590,7 @@ void Thread::_call()
|
|||||||
case call_id_delete_pd(): _call_delete<Pd>(); return;
|
case call_id_delete_pd(): _call_delete<Pd>(); return;
|
||||||
case call_id_new_signal_receiver(): _call_new<Signal_receiver>(); return;
|
case call_id_new_signal_receiver(): _call_new<Signal_receiver>(); return;
|
||||||
case call_id_new_signal_context():
|
case call_id_new_signal_context():
|
||||||
_call_new<Signal_context>((Signal_receiver*) user_arg_2(),
|
_call_new<Signal_context>((Signal_receiver*) user_arg_2(), user_arg_3());
|
||||||
(unsigned) user_arg_3());
|
|
||||||
return;
|
return;
|
||||||
case call_id_delete_signal_context(): _call_delete<Signal_context>(); return;
|
case call_id_delete_signal_context(): _call_delete<Signal_context>(); return;
|
||||||
case call_id_delete_signal_receiver(): _call_delete<Signal_receiver>(); return;
|
case call_id_delete_signal_receiver(): _call_delete<Signal_receiver>(); return;
|
||||||
|
@ -79,7 +79,7 @@ void Pager_object::print(Output &out) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
Pager_object::Pager_object(Cpu_session_capability cpu_session_cap,
|
Pager_object::Pager_object(Cpu_session_capability cpu_session_cap,
|
||||||
Thread_capability thread_cap, unsigned const badge,
|
Thread_capability thread_cap, addr_t const badge,
|
||||||
Affinity::Location, Session_label const &,
|
Affinity::Location, Session_label const &,
|
||||||
Cpu_session::Name const &)
|
Cpu_session::Name const &)
|
||||||
:
|
:
|
||||||
|
@ -134,7 +134,7 @@ class Genode::Pager_object : public Object_pool<Pager_object>::Entry,
|
|||||||
* \param badge user identifaction of pager object
|
* \param badge user identifaction of pager object
|
||||||
*/
|
*/
|
||||||
Pager_object(Cpu_session_capability cpu_session_cap,
|
Pager_object(Cpu_session_capability cpu_session_cap,
|
||||||
Thread_capability thread_cap, unsigned const badge,
|
Thread_capability thread_cap, addr_t const badge,
|
||||||
Affinity::Location, Session_label const&,
|
Affinity::Location, Session_label const&,
|
||||||
Cpu_session::Name const&);
|
Cpu_session::Name const&);
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ class Genode::Signal_broker
|
|||||||
* \throw Invalid_signal_source
|
* \throw Invalid_signal_source
|
||||||
*/
|
*/
|
||||||
Signal_context_capability
|
Signal_context_capability
|
||||||
alloc_context(Capability<Signal_source> source, unsigned long imprint)
|
alloc_context(Capability<Signal_source> source, addr_t imprint)
|
||||||
{
|
{
|
||||||
auto lambda = [&] (Signal_source_component *s) {
|
auto lambda = [&] (Signal_source_component *s) {
|
||||||
if (!s) {
|
if (!s) {
|
||||||
|
@ -36,7 +36,7 @@ struct Genode::Signal_context_component : Kernel_object<Kernel::Signal_context>,
|
|||||||
Signal_context_pool::Entry
|
Signal_context_pool::Entry
|
||||||
{
|
{
|
||||||
inline Signal_context_component(Signal_source_component &s,
|
inline Signal_context_component(Signal_source_component &s,
|
||||||
unsigned long const imprint);
|
addr_t const imprint);
|
||||||
|
|
||||||
Signal_source_component *source() { ASSERT_NEVER_CALLED; }
|
Signal_source_component *source() { ASSERT_NEVER_CALLED; }
|
||||||
};
|
};
|
||||||
@ -56,7 +56,7 @@ struct Genode::Signal_source_component : Kernel_object<Kernel::Signal_receiver>,
|
|||||||
|
|
||||||
|
|
||||||
Genode::Signal_context_component::Signal_context_component(Signal_source_component &s,
|
Genode::Signal_context_component::Signal_context_component(Signal_source_component &s,
|
||||||
unsigned long const imprint)
|
addr_t const imprint)
|
||||||
:
|
:
|
||||||
Kernel_object<Kernel::Signal_context>(true, s.kernel_object(), imprint),
|
Kernel_object<Kernel::Signal_context>(true, s.kernel_object(), imprint),
|
||||||
Signal_context_pool::Entry(Kernel_object<Kernel::Signal_context>::_cap)
|
Signal_context_pool::Entry(Kernel_object<Kernel::Signal_context>::_cap)
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include <hw/spec/arm/cpu.h>
|
#include <hw/spec/arm/cpu.h>
|
||||||
|
|
||||||
/* local includes */
|
/* local includes */
|
||||||
|
#include <kernel/interface_support.h>
|
||||||
#include <kernel/kernel.h>
|
#include <kernel/kernel.h>
|
||||||
#include <board.h>
|
#include <board.h>
|
||||||
#include <util.h>
|
#include <util.h>
|
||||||
@ -111,22 +112,16 @@ struct Genode::Arm_cpu : public Hw::Arm_cpu
|
|||||||
/**
|
/**
|
||||||
* Support for kernel calls
|
* Support for kernel calls
|
||||||
*/
|
*/
|
||||||
void user_arg_0(unsigned const arg) { r0 = arg; }
|
void user_arg_0(Kernel::Call_arg const arg) { r0 = arg; }
|
||||||
void user_arg_1(unsigned const arg) { r1 = arg; }
|
void user_arg_1(Kernel::Call_arg const arg) { r1 = arg; }
|
||||||
void user_arg_2(unsigned const arg) { r2 = arg; }
|
void user_arg_2(Kernel::Call_arg const arg) { r2 = arg; }
|
||||||
void user_arg_3(unsigned const arg) { r3 = arg; }
|
void user_arg_3(Kernel::Call_arg const arg) { r3 = arg; }
|
||||||
void user_arg_4(unsigned const arg) { r4 = arg; }
|
void user_arg_4(Kernel::Call_arg const arg) { r4 = arg; }
|
||||||
void user_arg_5(unsigned const arg) { r5 = arg; }
|
Kernel::Call_arg user_arg_0() const { return r0; }
|
||||||
void user_arg_6(unsigned const arg) { r6 = arg; }
|
Kernel::Call_arg user_arg_1() const { return r1; }
|
||||||
void user_arg_7(unsigned const arg) { r7 = arg; }
|
Kernel::Call_arg user_arg_2() const { return r2; }
|
||||||
unsigned user_arg_0() const { return r0; }
|
Kernel::Call_arg user_arg_3() const { return r3; }
|
||||||
unsigned user_arg_1() const { return r1; }
|
Kernel::Call_arg user_arg_4() const { return r4; }
|
||||||
unsigned user_arg_2() const { return r2; }
|
|
||||||
unsigned user_arg_3() const { return r3; }
|
|
||||||
unsigned user_arg_4() const { return r4; }
|
|
||||||
unsigned user_arg_5() const { return r5; }
|
|
||||||
unsigned user_arg_6() const { return r6; }
|
|
||||||
unsigned user_arg_7() const { return r7; }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize thread context
|
* Initialize thread context
|
||||||
|
@ -166,22 +166,16 @@ class Genode::Cpu : public Arm_v7_cpu
|
|||||||
/**
|
/**
|
||||||
* Support for kernel calls
|
* Support for kernel calls
|
||||||
*/
|
*/
|
||||||
void user_arg_0(unsigned const arg) { r0 = arg; }
|
void user_arg_0(Kernel::Call_arg const arg) { r0 = arg; }
|
||||||
void user_arg_1(unsigned const arg) { r1 = arg; }
|
void user_arg_1(Kernel::Call_arg const arg) { r1 = arg; }
|
||||||
void user_arg_2(unsigned const arg) { r2 = arg; }
|
void user_arg_2(Kernel::Call_arg const arg) { r2 = arg; }
|
||||||
void user_arg_3(unsigned const arg) { r3 = arg; }
|
void user_arg_3(Kernel::Call_arg const arg) { r3 = arg; }
|
||||||
void user_arg_4(unsigned const arg) { r4 = arg; }
|
void user_arg_4(Kernel::Call_arg const arg) { r4 = arg; }
|
||||||
void user_arg_5(unsigned const arg) { r5 = arg; }
|
Kernel::Call_arg user_arg_0() const { return r0; }
|
||||||
void user_arg_6(unsigned const arg) { r6 = arg; }
|
Kernel::Call_arg user_arg_1() const { return r1; }
|
||||||
void user_arg_7(unsigned const arg) { r7 = arg; }
|
Kernel::Call_arg user_arg_2() const { return r2; }
|
||||||
unsigned user_arg_0() const { return r0; }
|
Kernel::Call_arg user_arg_3() const { return r3; }
|
||||||
unsigned user_arg_1() const { return r1; }
|
Kernel::Call_arg user_arg_4() const { return r4; }
|
||||||
unsigned user_arg_2() const { return r2; }
|
|
||||||
unsigned user_arg_3() const { return r3; }
|
|
||||||
unsigned user_arg_4() const { return r4; }
|
|
||||||
unsigned user_arg_5() const { return r5; }
|
|
||||||
unsigned user_arg_6() const { return r6; }
|
|
||||||
unsigned user_arg_7() const { return r7; }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize thread context
|
* Initialize thread context
|
||||||
|
@ -88,16 +88,16 @@ class Genode::Cpu
|
|||||||
/**
|
/**
|
||||||
* Support for kernel calls
|
* Support for kernel calls
|
||||||
*/
|
*/
|
||||||
void user_arg_0(unsigned const arg) { a0 = arg; }
|
void user_arg_0(Kernel::Call_arg const arg) { a0 = arg; }
|
||||||
void user_arg_1(unsigned const arg) { a1 = arg; }
|
void user_arg_1(Kernel::Call_arg const arg) { a1 = arg; }
|
||||||
void user_arg_2(unsigned const arg) { a2 = arg; }
|
void user_arg_2(Kernel::Call_arg const arg) { a2 = arg; }
|
||||||
void user_arg_3(unsigned const arg) { a3 = arg; }
|
void user_arg_3(Kernel::Call_arg const arg) { a3 = arg; }
|
||||||
void user_arg_4(unsigned const arg) { a4 = arg; }
|
void user_arg_4(Kernel::Call_arg const arg) { a4 = arg; }
|
||||||
addr_t user_arg_0() const { return a0; }
|
Kernel::Call_arg user_arg_0() const { return a0; }
|
||||||
addr_t user_arg_1() const { return a1; }
|
Kernel::Call_arg user_arg_1() const { return a1; }
|
||||||
addr_t user_arg_2() const { return a2; }
|
Kernel::Call_arg user_arg_2() const { return a2; }
|
||||||
addr_t user_arg_3() const { return a3; }
|
Kernel::Call_arg user_arg_3() const { return a3; }
|
||||||
addr_t user_arg_4() const { return a4; }
|
Kernel::Call_arg user_arg_4() const { return a4; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize thread context
|
* Initialize thread context
|
||||||
|
@ -109,17 +109,11 @@ class Genode::Cpu
|
|||||||
void user_arg_2(Kernel::Call_arg const arg) { rdx = arg; }
|
void user_arg_2(Kernel::Call_arg const arg) { rdx = arg; }
|
||||||
void user_arg_3(Kernel::Call_arg const arg) { rcx = arg; }
|
void user_arg_3(Kernel::Call_arg const arg) { rcx = arg; }
|
||||||
void user_arg_4(Kernel::Call_arg const arg) { r8 = arg; }
|
void user_arg_4(Kernel::Call_arg const arg) { r8 = arg; }
|
||||||
void user_arg_5(Kernel::Call_arg const arg) { r9 = arg; }
|
|
||||||
void user_arg_6(Kernel::Call_arg const arg) { r10 = arg; }
|
|
||||||
void user_arg_7(Kernel::Call_arg const arg) { r11 = arg; }
|
|
||||||
Kernel::Call_arg user_arg_0() const { return rdi; }
|
Kernel::Call_arg user_arg_0() const { return rdi; }
|
||||||
Kernel::Call_arg user_arg_1() const { return rsi; }
|
Kernel::Call_arg user_arg_1() const { return rsi; }
|
||||||
Kernel::Call_arg user_arg_2() const { return rdx; }
|
Kernel::Call_arg user_arg_2() const { return rdx; }
|
||||||
Kernel::Call_arg user_arg_3() const { return rcx; }
|
Kernel::Call_arg user_arg_3() const { return rcx; }
|
||||||
Kernel::Call_arg user_arg_4() const { return r8; }
|
Kernel::Call_arg user_arg_4() const { return r8; }
|
||||||
Kernel::Call_arg user_arg_5() const { return r9; }
|
|
||||||
Kernel::Call_arg user_arg_6() const { return r10; }
|
|
||||||
Kernel::Call_arg user_arg_7() const { return r11; }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
Reference in New Issue
Block a user