mirror of
https://github.com/genodelabs/genode.git
synced 2025-02-20 17:52:52 +00:00
hw: make address variables 64-bit safe (fix #2503)
This commit is contained in:
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),
|
||||
_contexts_fe(this),
|
||||
@ -164,7 +164,7 @@ void Signal_receiver::_listen()
|
||||
/* create a signal data-object */
|
||||
typedef Genode::Signal_context * Signal_imprint;
|
||||
auto const context = _deliver.dequeue()->object();
|
||||
auto const imprint =
|
||||
Signal_imprint const imprint =
|
||||
reinterpret_cast<Signal_imprint>(context->_imprint);
|
||||
Signal::Data data(imprint, context->_submits);
|
||||
|
||||
|
@ -143,7 +143,7 @@ class Kernel::Signal_context : public Kernel::Object
|
||||
Fifo_element _deliver_fe;
|
||||
Fifo_element _contexts_fe;
|
||||
Signal_receiver * const _receiver;
|
||||
unsigned const _imprint;
|
||||
addr_t const _imprint;
|
||||
unsigned _submits;
|
||||
bool _ack;
|
||||
bool _killed;
|
||||
@ -179,7 +179,7 @@ class Kernel::Signal_context : public Kernel::Object
|
||||
*
|
||||
* \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
|
||||
|
@ -590,8 +590,7 @@ void Thread::_call()
|
||||
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_context():
|
||||
_call_new<Signal_context>((Signal_receiver*) user_arg_2(),
|
||||
(unsigned) user_arg_3());
|
||||
_call_new<Signal_context>((Signal_receiver*) user_arg_2(), user_arg_3());
|
||||
return;
|
||||
case call_id_delete_signal_context(): _call_delete<Signal_context>(); 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,
|
||||
Thread_capability thread_cap, unsigned const badge,
|
||||
Thread_capability thread_cap, addr_t const badge,
|
||||
Affinity::Location, Session_label 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
|
||||
*/
|
||||
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&,
|
||||
Cpu_session::Name const&);
|
||||
|
||||
|
@ -99,7 +99,7 @@ class Genode::Signal_broker
|
||||
* \throw Invalid_signal_source
|
||||
*/
|
||||
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) {
|
||||
if (!s) {
|
||||
|
@ -36,7 +36,7 @@ struct Genode::Signal_context_component : Kernel_object<Kernel::Signal_context>,
|
||||
Signal_context_pool::Entry
|
||||
{
|
||||
inline Signal_context_component(Signal_source_component &s,
|
||||
unsigned long const imprint);
|
||||
addr_t const imprint);
|
||||
|
||||
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,
|
||||
unsigned long const imprint)
|
||||
addr_t const imprint)
|
||||
:
|
||||
Kernel_object<Kernel::Signal_context>(true, s.kernel_object(), imprint),
|
||||
Signal_context_pool::Entry(Kernel_object<Kernel::Signal_context>::_cap)
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include <hw/spec/arm/cpu.h>
|
||||
|
||||
/* local includes */
|
||||
#include <kernel/interface_support.h>
|
||||
#include <kernel/kernel.h>
|
||||
#include <board.h>
|
||||
#include <util.h>
|
||||
@ -111,22 +112,16 @@ struct Genode::Arm_cpu : public Hw::Arm_cpu
|
||||
/**
|
||||
* Support for kernel calls
|
||||
*/
|
||||
void user_arg_0(unsigned const arg) { r0 = arg; }
|
||||
void user_arg_1(unsigned const arg) { r1 = arg; }
|
||||
void user_arg_2(unsigned const arg) { r2 = arg; }
|
||||
void user_arg_3(unsigned const arg) { r3 = arg; }
|
||||
void user_arg_4(unsigned const arg) { r4 = arg; }
|
||||
void user_arg_5(unsigned const arg) { r5 = arg; }
|
||||
void user_arg_6(unsigned const arg) { r6 = arg; }
|
||||
void user_arg_7(unsigned const arg) { r7 = arg; }
|
||||
unsigned user_arg_0() const { return r0; }
|
||||
unsigned user_arg_1() const { return r1; }
|
||||
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; }
|
||||
void user_arg_0(Kernel::Call_arg const arg) { r0 = arg; }
|
||||
void user_arg_1(Kernel::Call_arg const arg) { r1 = arg; }
|
||||
void user_arg_2(Kernel::Call_arg const arg) { r2 = arg; }
|
||||
void user_arg_3(Kernel::Call_arg const arg) { r3 = arg; }
|
||||
void user_arg_4(Kernel::Call_arg const arg) { r4 = arg; }
|
||||
Kernel::Call_arg user_arg_0() const { return r0; }
|
||||
Kernel::Call_arg user_arg_1() const { return r1; }
|
||||
Kernel::Call_arg user_arg_2() const { return r2; }
|
||||
Kernel::Call_arg user_arg_3() const { return r3; }
|
||||
Kernel::Call_arg user_arg_4() const { return r4; }
|
||||
|
||||
/**
|
||||
* Initialize thread context
|
||||
|
@ -166,22 +166,16 @@ class Genode::Cpu : public Arm_v7_cpu
|
||||
/**
|
||||
* Support for kernel calls
|
||||
*/
|
||||
void user_arg_0(unsigned const arg) { r0 = arg; }
|
||||
void user_arg_1(unsigned const arg) { r1 = arg; }
|
||||
void user_arg_2(unsigned const arg) { r2 = arg; }
|
||||
void user_arg_3(unsigned const arg) { r3 = arg; }
|
||||
void user_arg_4(unsigned const arg) { r4 = arg; }
|
||||
void user_arg_5(unsigned const arg) { r5 = arg; }
|
||||
void user_arg_6(unsigned const arg) { r6 = arg; }
|
||||
void user_arg_7(unsigned const arg) { r7 = arg; }
|
||||
unsigned user_arg_0() const { return r0; }
|
||||
unsigned user_arg_1() const { return r1; }
|
||||
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; }
|
||||
void user_arg_0(Kernel::Call_arg const arg) { r0 = arg; }
|
||||
void user_arg_1(Kernel::Call_arg const arg) { r1 = arg; }
|
||||
void user_arg_2(Kernel::Call_arg const arg) { r2 = arg; }
|
||||
void user_arg_3(Kernel::Call_arg const arg) { r3 = arg; }
|
||||
void user_arg_4(Kernel::Call_arg const arg) { r4 = arg; }
|
||||
Kernel::Call_arg user_arg_0() const { return r0; }
|
||||
Kernel::Call_arg user_arg_1() const { return r1; }
|
||||
Kernel::Call_arg user_arg_2() const { return r2; }
|
||||
Kernel::Call_arg user_arg_3() const { return r3; }
|
||||
Kernel::Call_arg user_arg_4() const { return r4; }
|
||||
|
||||
/**
|
||||
* Initialize thread context
|
||||
|
@ -88,16 +88,16 @@ class Genode::Cpu
|
||||
/**
|
||||
* Support for kernel calls
|
||||
*/
|
||||
void user_arg_0(unsigned const arg) { a0 = arg; }
|
||||
void user_arg_1(unsigned const arg) { a1 = arg; }
|
||||
void user_arg_2(unsigned const arg) { a2 = arg; }
|
||||
void user_arg_3(unsigned const arg) { a3 = arg; }
|
||||
void user_arg_4(unsigned const arg) { a4 = arg; }
|
||||
addr_t user_arg_0() const { return a0; }
|
||||
addr_t user_arg_1() const { return a1; }
|
||||
addr_t user_arg_2() const { return a2; }
|
||||
addr_t user_arg_3() const { return a3; }
|
||||
addr_t user_arg_4() const { return a4; }
|
||||
void user_arg_0(Kernel::Call_arg const arg) { a0 = arg; }
|
||||
void user_arg_1(Kernel::Call_arg const arg) { a1 = arg; }
|
||||
void user_arg_2(Kernel::Call_arg const arg) { a2 = arg; }
|
||||
void user_arg_3(Kernel::Call_arg const arg) { a3 = arg; }
|
||||
void user_arg_4(Kernel::Call_arg const arg) { a4 = arg; }
|
||||
Kernel::Call_arg user_arg_0() const { return a0; }
|
||||
Kernel::Call_arg user_arg_1() const { return a1; }
|
||||
Kernel::Call_arg user_arg_2() const { return a2; }
|
||||
Kernel::Call_arg user_arg_3() const { return a3; }
|
||||
Kernel::Call_arg user_arg_4() const { return a4; }
|
||||
|
||||
/**
|
||||
* Initialize thread context
|
||||
|
@ -109,17 +109,11 @@ class Genode::Cpu
|
||||
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_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_1() const { return rsi; }
|
||||
Kernel::Call_arg user_arg_2() const { return rdx; }
|
||||
Kernel::Call_arg user_arg_3() const { return rcx; }
|
||||
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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user