Home | History | Annotate | Download | only in Ipf
      1 /// Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>
      2 /// This program and the accompanying materials
      3 /// are licensed and made available under the terms and conditions of the BSD License
      4 /// which accompanies this distribution.  The full text of the license may be found at
      5 /// http://opensource.org/licenses/bsd-license.php
      6 ///
      7 /// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
      8 /// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
      9 ///
     10 /// Module Name:
     11 ///
     12 ///   setjmp.s
     13 ///
     14 /// Abstract:
     15 ///
     16 ///
     17 
     18 .auto
     19 .text
     20 
     21 .globl InternalAssertJumpBuffer
     22 .type   InternalAssertJumpBuffer, @function
     23 
     24 .proc   SetJump
     25 .type   SetJump, @function
     26 SetJump::
     27         alloc               loc0 = ar.pfs, 1, 2, 1, 0
     28         mov                 loc1 = b0
     29         mov                 out0 = in0
     30 
     31         brl.call.sptk.many  b0  = InternalAssertJumpBuffer
     32 
     33         mov                 r14 = ar.unat
     34         mov                 r15 = ar.bsp
     35         add                 r10 = 0x10*20, in0
     36 
     37         stf.spill.nta       [in0] = f2, 0x10
     38         st8.spill.nta       [r10] = r4, 8
     39         mov                 r21 = b1
     40 
     41         stf.spill.nta       [in0] = f3, 0x10
     42         st8.spill.nta       [r10] = r5, 8
     43         mov                 r22 = b2
     44 
     45         stf.spill.nta       [in0] = f4, 0x10
     46         st8.spill.nta       [r10] = r6, 8
     47         mov                 r23 = b3
     48 
     49         stf.spill.nta       [in0] = f5, 0x10
     50         st8.spill.nta       [r10] = r7, 8
     51         mov                 r24 = b4
     52 
     53         stf.spill.nta       [in0] = f16, 0x10
     54         st8.spill.nta       [r10] = sp, 8
     55         mov                 r25 = b5
     56 
     57         stf.spill.nta       [in0] = f17, 0x10
     58         st8.nta             [r10] = loc1, 8
     59         mov                 r16 = pr
     60 
     61         stf.spill.nta       [in0] = f18, 0x10
     62         st8.nta             [r10] = r21, 8
     63         mov                 r17 = ar.lc
     64 
     65         stf.spill.nta       [in0] = f19, 0x10
     66         st8.nta             [r10] = r22, 8
     67 
     68         stf.spill.nta       [in0] = f20, 0x10
     69         st8.nta             [r10] = r23, 8
     70 
     71         stf.spill.nta       [in0] = f21, 0x10
     72         st8.nta             [r10] = r24, 8
     73 
     74         stf.spill.nta       [in0] = f22, 0x10
     75         st8.nta             [r10] = r25, 8
     76 
     77         stf.spill.nta       [in0] = f23, 0x10
     78         mov                 r18 = ar.unat
     79 
     80         stf.spill.nta       [in0] = f24, 0x10
     81         st8.nta             [r10] = r14, 8          // UNAT
     82 
     83         stf.spill.nta       [in0] = f25, 0x10
     84         st8.nta             [r10] = r18, 8          // UNAT after spill
     85 
     86         stf.spill.nta       [in0] = f26, 0x10
     87         st8.nta             [r10] = loc0, 8         // PFS
     88 
     89         stf.spill.nta       [in0] = f27, 0x10
     90         st8.nta             [r10] = r15, 8          // BSP
     91         mov                 r8  = 0
     92 
     93         stf.spill.nta       [in0] = f28, 0x10
     94         mov                 r19 = ar.fpsr
     95 
     96         stf.spill.nta       [in0] = f29, 0x10
     97         st8.nta             [r10] = r16, 8          // PR
     98         mov                 ar.pfs = loc0
     99 
    100         stf.spill.nta       [in0] = f30, 0x10
    101         st8.nta             [r10] = r17, 8          // LC
    102         mov                 b0  = loc1
    103 
    104         stf.spill.nta       [in0] = f31, 0x10
    105         st8.nta             [r10] = r19             // FPSR
    106 
    107         mov                 ar.unat = r14
    108         br.ret.sptk         b0
    109 .endp   SetJump
    110