hw: make address variables 64-bit safe (fix #2503)

This commit is contained in:
Stefan Kalkowski 2017-08-21 15:34:27 +02:00 committed by Christian Helmuth
parent ea46c462a4
commit 08a311b033
11 changed files with 41 additions and 59 deletions

View File

@ -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);

View File

@ -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

View File

@ -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;

View File

@ -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 &)
:

View File

@ -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&);

View File

@ -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) {

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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: