Subversion Repositories HelenOS-historic

Compare Revisions

Regard whitespace Rev 1055 → Rev 1056

/kernel/trunk/arch/ia64/src/ivt.S
62,8 → 62,6
* This goal is achieved by using procedure calls after RSE becomes operational.
*
* Some steps are skipped (enabling and disabling interrupts).
* Some steps are not fully supported yet (e.g. dealing with floating-point
* context).
*
* @param offs Offset from the beginning of IVT.
* @param handler Interrupt handler address.
83,11 → 81,11
* Note that r24-r31 from bank 0 can be used only as long as PSR.ic = 0.
*/
/*Set up FPU as in interrupred*/
/* Set up FPU as in interrupted context. */
mov r24=psr
mov r25=cr.ipsr
mov r26=(PSR_DFH_MASK)
mov r27=(~(PSR_DFH_MASK));;
mov r26 = PSR_DFH_MASK
mov r27 = ~PSR_DFH_MASK ;;
and r26=r25,r26
and r24=r24,r27;;
or r24=r24,r26;;
251,16 → 249,16
mov cr.iipa = r26
mov cr.isr = r27
mov cr.ifa = r28
/*Set up FPU as in exception*/
 
/* Set up FPU as in exception. */
mov r24=psr
mov r26=(PSR_DFH_MASK)
mov r27=(~(PSR_DFH_MASK));;
mov r26 = PSR_DFH_MASK
mov r27 = ~PSR_DFH_MASK ;;
and r25=r25,r27
and r24=r24,r26;;
or r25=r25,r24;;
mov cr.ipsr = r25
 
/* 18. restore predicate registers from memory stack */
ld8 r29 = [r31], +8 ;; /* load predicate registers */
mov pr = r29
307,7 → 305,6
mov loc16 = b7
/* 8. preserve general and floating-point registers */
/* TODO: save floating-point context */
mov loc17 = r1
mov loc18 = r2
mov loc19 = r3
340,22 → 337,14
mov loc45 = r30
mov loc46 = r31
 
mov r24=96 + STACK_SCRATCH_AREA_SIZE
mov r25=112 + STACK_SCRATCH_AREA_SIZE
mov r26=0 + STACK_SCRATCH_AREA_SIZE
mov r27=16 + STACK_SCRATCH_AREA_SIZE
mov r28=32 + STACK_SCRATCH_AREA_SIZE
mov r29=48 + STACK_SCRATCH_AREA_SIZE
mov r30=64 + STACK_SCRATCH_AREA_SIZE
mov r31=80 + STACK_SCRATCH_AREA_SIZE;;
add r24=r12,r24
add r25=r12,r25
add r26=r12,r26
add r27=r12,r27
add r28=r12,r28
add r29=r12,r29
add r30=r12,r30
add r31=r12,r31;;
add r24 = 96 + STACK_SCRATCH_AREA_SIZE, r12
add r25 = 112 + STACK_SCRATCH_AREA_SIZE, r12
add r26 = 0 + STACK_SCRATCH_AREA_SIZE, r12
add r27 = 16 + STACK_SCRATCH_AREA_SIZE, r12
add r28 = 32 + STACK_SCRATCH_AREA_SIZE, r12
add r29 = 48 + STACK_SCRATCH_AREA_SIZE, r12
add r30 = 64 + STACK_SCRATCH_AREA_SIZE, r12
add r31 = 80 + STACK_SCRATCH_AREA_SIZE, r12 ;;
stf.spill [r26]=f2,0x80
stf.spill [r27]=f3,0x80
391,8 → 380,7
stf.spill [r30]=f30,0x80
stf.spill [r31]=f31,0x80;;
 
/* preserve Floating point status register */
mov loc47 = ar.fpsr
mov loc47 = ar.fpsr /* preserve floating point status register */
/* 9. skipped (will not enable interrupts) */
/*
418,25 → 406,15
*/
 
/* 13. restore general and floating-point registers */
/* TODO: restore floating-point context */
mov r24=96 + STACK_SCRATCH_AREA_SIZE
mov r25=112 + STACK_SCRATCH_AREA_SIZE
mov r26=0 + STACK_SCRATCH_AREA_SIZE
mov r27=16 + STACK_SCRATCH_AREA_SIZE
mov r28=32 + STACK_SCRATCH_AREA_SIZE
mov r29=48 + STACK_SCRATCH_AREA_SIZE
mov r30=64 + STACK_SCRATCH_AREA_SIZE
mov r31=80 + STACK_SCRATCH_AREA_SIZE;;
add r24=r12,r24
add r25=r12,r25
add r26=r12,r26
add r27=r12,r27
add r28=r12,r28
add r29=r12,r29
add r30=r12,r30
add r31=r12,r31;;
add r24 = 96 + STACK_SCRATCH_AREA_SIZE, r12
add r25 = 112 + STACK_SCRATCH_AREA_SIZE, r12
add r26 = 0 + STACK_SCRATCH_AREA_SIZE, r12
add r27 = 16 + STACK_SCRATCH_AREA_SIZE, r12
add r28 = 32 + STACK_SCRATCH_AREA_SIZE, r12
add r29 = 48 + STACK_SCRATCH_AREA_SIZE, r12
add r30 = 64 + STACK_SCRATCH_AREA_SIZE, r12
add r31 = 80 + STACK_SCRATCH_AREA_SIZE, r12 ;;
 
ldf.fill f2=[r26],0x80
ldf.fill f3=[r27],0x80
ldf.fill f4=[r28],0x80
471,7 → 449,6
ldf.fill f30=[r30],0x80
ldf.fill f31=[r31],0x80;;
mov r1 = loc17
mov r2 = loc18
mov r3 = loc19
504,8 → 481,7
mov r30 = loc45
mov r31 = loc46
/* restore Floating point status register */
mov ar.fpsr = loc47
mov ar.fpsr = loc47 /* restore floating point status register */
/* 14. restore branch and application registers */
mov ar.unat = loc3
607,7 → 583,3
HEAVYWEIGHT_HANDLER 0x7d00
HEAVYWEIGHT_HANDLER 0x7e00
HEAVYWEIGHT_HANDLER 0x7f00