Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 961 → Rev 962

/kernel/trunk/arch/ia64/include/interrupt.h
70,6 → 70,7
__u64 in1;
__u64 in2;
__u64 in3;
__u64 in4;
} __attribute__ ((packed));
 
extern void *ivt;
/kernel/trunk/arch/ia64/src/ivt.S
32,7 → 32,7
#include <arch/mm/page.h>
#include <align.h>
 
#define STACK_ITEMS 18
#define STACK_ITEMS 19
#define STACK_FRAME_SIZE ALIGN_UP((STACK_ITEMS*STACK_ITEM_SIZE) + STACK_SCRATCH_AREA_SIZE, STACK_ALIGNMENT)
 
#if (STACK_ITEMS % 2 == 0)
130,12 → 130,13
* Otherwise p6 is false and p5 is true.
* Note that p5 is a preserved predicate register and we make use of it.
*/
 
(p6) st8 [r31] = r36, -8 ;; /* save in4 */
(p6) st8 [r31] = r35, -8 ;; /* save in3 */
(p6) st8 [r31] = r34, -8 ;; /* save in2 */
(p6) st8 [r31] = r33, -8 ;; /* save in1 */
(p6) st8 [r31] = r32, -8 ;; /* save in0 */
(p5) add r31 = -32, r31 ;;
(p5) add r31 = -40, r31 ;;
st8 [r31] = r30, -8 ;; /* save old stack pointer */
/kernel/trunk/arch/ia64/src/ia64.c
35,6 → 35,7
#include <arch/register.h>
#include <arch/types.h>
#include <arch/context.h>
#include <arch/stack.h>
#include <arch/mm/page.h>
#include <mm/as.h>
#include <config.h>
83,7 → 84,7
rsc.pl = PL_USER;
rsc.mode = 3; /* eager mode */
 
switch_to_userspace(entry, USTACK_ADDRESS+PAGE_SIZE-1, USTACK_ADDRESS, psr.value, rsc.value);
switch_to_userspace(entry, USTACK_ADDRESS+PAGE_SIZE-ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT), USTACK_ADDRESS, psr.value, rsc.value);
 
while (1) {
;
/kernel/trunk/arch/ia64/src/interrupt.c
186,10 → 186,10
istate->cr_ipsr.ri++;
}
 
if (istate->in3 < SYSCALL_END)
return syscall_table[istate->in3](istate->in0, istate->in1, istate->in2);
if (istate->in4 < SYSCALL_END)
return syscall_table[istate->in4](istate->in0, istate->in1, istate->in2, istate->in3);
else
panic("Undefined syscall %d", istate->in3);
panic("Undefined syscall %d", istate->in4);
return -1;
}