Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 1277 → Rev 1278

/kernel/trunk/arch/amd64/src/ddi/ddi.c
100,20 → 100,6
return 0;
}
 
/** Enable/disable interrupts form syscall
*
* @param enable If non-zero, interrupts are enabled, otherwise disabled
* @param flags RFLAGS register
*/
__native ddi_int_control_arch(__native enable, __native *flags)
{
if (enable)
*flags |= RFLAGS_IF;
else
*flags &= ~RFLAGS_IF;
return 0;
}
 
/** Install I/O Permission bitmap.
*
* Current task's I/O permission bitmap, if any, is installed
/kernel/trunk/arch/amd64/src/asm_utils.S
244,11 → 244,7
sti
movq %r9, %rcx # Exchange last parameter as a third
cmp $2, %r8 # Is this SYS_INT_CONTROL
je sys_int_ctrl
call syscall_handler
sys_end:
cli # We will be touching stack pointer
popq %r11
255,13 → 251,8
popq %rcx
movq 0(%rsp), %rsp
sysretq
sys_int_ctrl:
mov %rsp, %rsi # Pointer to flags
call ddi_int_control
jmp sys_end
.data
.global interrupt_handler_size
 
/kernel/trunk/arch/mips32/src/start.S
253,15 → 253,10
sw $t2,SS_STATUS($sp)
mtc0 $t0, $status
 
li $t4, 2 # SYS_INT_CONTROL
beq $t4, $v0, sysc_int_control
nop
# CALL Syscall handler
jal syscall_handler
sw $v0, SS_ARG4($sp) # save v0 - arg4 to stack
 
sysc_exit:
# restore status
mfc0 $t0, $status
lw $t1,SS_STATUS($sp)
281,14 → 276,7
lw $sp,SS_SP($sp) # restore sp
eret
sysc_int_control:
jal ddi_int_control
addi $a1, $sp, SS_STATUS
j sysc_exit
nop
tlb_refill_handler:
KERNEL_STACK_TO_K0
sub $k0, REGISTER_SPACE
/kernel/trunk/arch/mips32/src/ddi/ddi.c
48,17 → 48,3
{
return 0;
}
 
/** Enable/disable interrupts for syscall
*
* @param enable If non-zero, interrupts are enabled, otherwise disabled
* @param flags CP0 status register
*/
__native ddi_int_control_arch(__native enable, __native *flags)
{
if (enable)
*flags |= cp0_status_ie_enabled_bit;
else
*flags &= ~cp0_status_ie_enabled_bit;
return 0;
}
/kernel/trunk/arch/ia32/src/asm.S
86,7 → 86,7
# The handlers setup data segment registers
# and call exc_dispatch().
#
#define INTERRUPT_ALIGN 128
#define INTERRUPT_ALIGN 64
.macro handler i n
 
.ifeq \i-0x30 # Syscall handler
108,11 → 108,8
movw %ax,%es
sti
cmp $2, %edi # Is this SYS_INT_CONTROL?
je sys_int_ctrl
call syscall_handler # syscall_handler(ax,cx,dx,si,di)
sysc_end:
cli
addl $20, %esp # clean-up of parameters
123,12 → 120,6
CLEAR_NT_FLAG
iret
sys_int_ctrl: # Interrupt control
mov %esp, %eax
add $44, %eax
mov %eax, 4(%esp) # Pointer to flags - 2nd argument
call ddi_int_control
jmp sysc_end
.else
/*
* This macro distinguishes between two versions of ia32 exceptions.
/kernel/trunk/arch/ia32/src/ddi/ddi.c
101,20 → 101,6
return 0;
}
 
/** Enable/disable interrupts for syscall
*
* @param enable If non-zero, interrupts are enabled, otherwise disabled
* @param flags EFLAGS flags register
*/
__native ddi_int_control_arch(__native enable, __native *flags)
{
if (enable)
*flags |= EFLAGS_IF;
else
*flags &= ~EFLAGS_IF;
return 0;
}
 
/** Install I/O Permission bitmap.
*
* Current task's I/O permission bitmap, if any, is installed