diff --git a/kernel/fiasco/src/drivers/arm/processor-arm.cpp b/kernel/fiasco/src/drivers/arm/processor-arm.cpp index 2dcfdd16..5ed83314 100644 --- a/kernel/fiasco/src/drivers/arm/processor-arm.cpp +++ b/kernel/fiasco/src/drivers/arm/processor-arm.cpp @@ -75,7 +75,8 @@ void Proc::stack_pointer(Mword sp) IMPLEMENT static inline Mword Proc::program_counter() { - register Mword pc asm ("pc"); + Mword pc; + asm ("mov %0, pc" : "=r" (pc)); return pc; } diff --git a/kernel/fiasco/src/kern/arm/sys_call_page-arm.cpp b/kernel/fiasco/src/kern/arm/sys_call_page-arm.cpp index 407ef8e9..6f21d062 100644 --- a/kernel/fiasco/src/kern/arm/sys_call_page-arm.cpp +++ b/kernel/fiasco/src/kern/arm/sys_call_page-arm.cpp @@ -43,8 +43,8 @@ Sys_call_page::init() Vmem_alloc::NO_ZERO_FILL, Vmem_alloc::User)) panic("FIASCO: can't allocate system-call page.\n"); - for (unsigned i = 0; i < Config::PAGE_SIZE; i += sizeof(Mword)) - *(sys_calls++) = 0xef000000; // svc + for (unsigned i = 0; i < Config::PAGE_SIZE / sizeof(Mword); i++) + sys_calls[i] = 0xef000000; // svc set_utcb_get_code((Mword*)(Mem_layout::Syscalls + 0xf00));