Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset c4026aa in mainline


Ignore:
Timestamp:
2012-02-23T20:19:11Z (8 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
master
Children:
087768f
Parents:
f31aed5
Message:

Make sal_call() compliant with the ia64 ABI.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • boot/arch/ia64/src/sal_asm.S

    rf31aed5 rc4026aa  
    2929.explicit
    3030
     31#define STACK_SCRATCH_AREA      16
     32#define STACK_IN8               (0 + STACK_SCRATCH_AREA)
     33#define STACK_IN9               (8 + STACK_SCRATCH_AREA)
     34#define STACK_IN10              (16 + STACK_SCRATCH_AREA)
     35
    3136.global sal_call
    3237
     
    3944#
    4045sal_call:
    41         alloc loc0 = ar.pfs, 11, 5, 8, 0
     46        alloc loc0 = ar.pfs, 8, 8, 8, 0
    4247       
     48        adds sp = -STACK_SCRATCH_AREA, sp
     49
    4350        mov loc1 = gp
    4451        mov loc2 = rp
     
    5764       
    5865        ld8 loc3 = [loc3]
    59         ld8 gp = [loc4] ;;
     66        ld8 gp = [loc4]
     67
     68        adds r14 = STACK_IN8 + STACK_SCRATCH_AREA, sp
     69        adds r15 = STACK_IN9 + STACK_SCRATCH_AREA, sp
     70        adds r16 = STACK_IN10 + STACK_SCRATCH_AREA, sp ;;
     71
     72        ld8 loc5 = [r14]
     73        ld8 loc6 = [r15]
     74        ld8 loc7 = [r16]
    6075       
    6176        mov b6 = loc3 ;;
    6277        br.call.sptk.many rp = b6
    6378       
    64         cmp.ne p7,p0 = 0, in8
    65         cmp.ne p8,p0 = 0, in9
    66         cmp.ne p9,p0 = 0, in10 ;;
     79        cmp.ne p7,p0 = 0, loc5
     80        cmp.ne p8,p0 = 0, loc6
     81        cmp.ne p9,p0 = 0, loc7 ;;
    6782       
    68 (p7)    st8 [in8] = r9
    69 (p8)    st8 [in9] = r10
    70 (p9)    st8 [in10] = r11
     83(p7)    st8 [loc5] = r9
     84(p8)    st8 [loc6] = r10
     85(p9)    st8 [loc7] = r11
    7186       
    7287        mov gp = loc1
    73         mov rp = loc2 ;;
     88        mov rp = loc2
     89
     90        adds sp = STACK_SCRATCH_AREA, sp ;;
    7491       
    7592        mov ar.pfs = loc0
    7693        br.ret.sptk.many rp
     94
Note: See TracChangeset for help on using the changeset viewer.