Changes in / [ec8c622:087768f] in mainline


Ignore:
Files:
4 edited

Legend:

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

    rec8c622 r087768f  
    3232
    3333pal_static_call:
    34         alloc loc0 = ar.pfs, 7, 5, 0, 0
     34        alloc loc0 = ar.pfs, 7, 6, 0, 0
     35
     36        mov loc1 = psr ;;
     37        mov psr.l = r0 ;;
     38        srlz.i
     39        srlz.d
    3540       
    36         mov loc1 = gp
    37         mov loc2 = rp
     41        mov loc2 = gp
     42        mov loc3 = rp
    3843       
    39         addl loc3 = @gprel(pal_proc), gp
    40        
     44        addl loc4 = @gprel(pal_proc), gp
     45
    4146        mov r28 = in0
    4247        mov r29 = in1
     
    4449        mov r31 = in3 ;;
    4550       
    46         ld8 loc3 = [loc3]
    47         movl loc4 = 0f ;;
     51        ld8 loc4 = [loc4]
     52        movl loc5 = 0f ;;
    4853
    49         mov b6 = loc3
    50         mov rp = loc4 ;;
     54        mov b6 = loc4
     55        mov rp = loc5 ;;
    5156        br.cond.sptk.many b6
    5257
    53580:
     59        mov psr.l = loc1 ;;
     60        srlz.i
     61        srlz.d
     62
    5463        cmp.ne p7,p0 = 0, in4
    5564        cmp.ne p8,p0 = 0, in5
     
    6069(p9)    st8 [in6] = r11
    6170       
    62         mov gp = loc1
    63         mov rp = loc2 ;;
     71        mov gp = loc2
     72        mov rp = loc3 ;;
    6473       
    6574        mov ar.pfs = loc0
  • boot/arch/ia64/src/sal_asm.S

    rec8c622 r087768f  
    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
  • kernel/arch/ia64/include/asm.h

    rec8c622 r087768f  
    6161        asm volatile (
    6262                "mf\n"
     63                "mf.a\n"
    6364                ::: "memory"
    6465        );
     
    7475        asm volatile (
    7576                "mf\n"
     77                "mf.a\n"
    7678                ::: "memory"
    7779        );
     
    8789        asm volatile (
    8890                "mf\n"
     91                "mf.a\n"
    8992                ::: "memory"
    9093        );
     
    104107        else
    105108                v = *port;
     109
     110        asm volatile (
     111                "mf.a\n"
     112                ::: "memory"
     113        );
    106114       
    107115        return v;
     
    121129        else
    122130                v = *port;
     131
     132        asm volatile (
     133                "mf.a\n"
     134                ::: "memory"
     135        );
    123136       
    124137        return v;
     
    138151        else
    139152                v = *port;
     153
     154        asm volatile (
     155                "mf.a\n"
     156                ::: "memory"
     157        );
    140158
    141159        return v;
  • uspace/lib/c/arch/ia64/include/ddi.h

    rec8c622 r087768f  
    6262
    6363        asm volatile ("mf\n" ::: "memory");
     64        asm volatile ("mf.a\n" ::: "memory");
    6465}
    6566
     
    7677
    7778        asm volatile ("mf\n" ::: "memory");
     79        asm volatile ("mf.a\n" ::: "memory");
    7880}
    7981
     
    9092
    9193        asm volatile ("mf\n" ::: "memory");
     94        asm volatile ("mf.a\n" ::: "memory");
    9295}
    9396
     
    106109                v = *port;
    107110        }
     111
     112        asm volatile ("mf.a\n" ::: "memory");
    108113
    109114        return v;
     
    125130        }
    126131
     132        asm volatile ("mf.a\n" ::: "memory");
     133
    127134        return v;
    128135}
     
    143150        }
    144151
     152        asm volatile ("mf.a\n" ::: "memory");
     153
    145154        return v;
    146155}
Note: See TracChangeset for help on using the changeset viewer.