home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / unix / unixlib36d / src / sys / s / _jmp < prev    next >
Encoding:
Text File  |  1994-02-26  |  1.7 KB  |  72 lines

  1. ;       /* _jmp.s (c) Copyright 1990 H.Rogers */
  2.  
  3.         GET     @.src.sys.s.asm_dec
  4.  
  5.         AREA    |C$$code|,CODE,READONLY
  6.  
  7.         IMPORT  |__fpflag|
  8. |__fpflag_ptr|
  9.         DCD     |__fpflag|
  10.  
  11.         IMPORT  |__alloca_list|
  12. |__alloca_list_ptr|
  13.         DCD     |__alloca_list|
  14.         IMPORT  free
  15.  
  16.         EXPORT  setjmp
  17.  
  18.         NAME    setjmp
  19. setjmp
  20.         LDR     a4,[pc,#|__fpflag_ptr|-.-8]
  21.         LDR     a4,[a4,#0]
  22.         CMP     a4,#0
  23.         ADDEQ   a1,a1,#48
  24.         BEQ     |__setjmp_l1|
  25.         STFE    f4,[a1],#12
  26.         STFE    f5,[a1],#12
  27.         STFE    f6,[a1],#12
  28.         STFE    f7,[a1],#12
  29. |__setjmp_l1|
  30.         LDR     a4,[pc,#|__alloca_list_ptr|-.-8]
  31.         LDR     a4,[a4,#0]
  32.         STR     a4,[a1],#4
  33.         STMIA   a1,{a1,v1,v2,v3,v4,v5,v6,fp,sp,lr}
  34.         MOV     a1,#0
  35.         MOVS    pc,lr
  36.  
  37.         EXPORT  longjmp
  38.  
  39.         NAME    longjmp
  40. longjmp
  41.         LDR     a4,[pc,#|__fpflag_ptr|-.-8]
  42.         LDR     a4,[a4,#0]
  43.         CMP     a4,#0
  44.         ADDEQ   a1,a1,#48
  45.         BEQ     |__longjmp_l1|
  46.         LDFE    f4,[a1],#12
  47.         LDFE    f5,[a1],#12
  48.         LDFE    f6,[a1],#12
  49.         LDFE    f7,[a1],#12
  50. |__longjmp_l1|
  51.         LDR     a4,[a1],#4
  52.         LDR     ip,[pc,#|__alloca_list_ptr|-.-8]
  53.         LDR     a3,[ip,#0]
  54.         CMP     a3,a4
  55.         BEQ     |__longjmp_l3|
  56.         STMFD   sp!,{a1,a2}
  57. |__longjmp_l2|
  58.         MOV     a1,a3
  59.         LDR     a3,[a3,#0]
  60.         STR     a3,[ip,#0]
  61.         STMFD   sp!,{a3,a4,ip}
  62.         BL      free
  63.         LDMFD   sp!,{a3,a4,ip}
  64.         CMP     a3,a4
  65.         BNE     |__longjmp_l2|
  66.         LDMFD   sp!,{a1,a2}
  67. |__longjmp_l3|
  68.         STR     a2,[a1,#0]
  69.         LDMIA   a1,{a1,v1,v2,v3,v4,v5,v6,fp,sp,pc}^
  70.  
  71.         END
  72.