Changeset 347


Ignore:
Timestamp:
Feb 20, 2009, 3:14:39 AM (9 years ago)
Author:
khorben
Message:

Added longjmp() and setjmp() (untested)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/System/Sources/libc/src/kernel/netbsd/amd64/syscalls.S

    r330 r347  
    7474        ret
    7575#undef SYS_execve
     76
     77
     78/* longjmp */
     79.global longjmp
     80.type longjmp,@function
     81longjmp:
     82        mov     (0x00)(%rdi),%rbx
     83        mov     (0x08)(%rdi),%rbp
     84        mov     (0x10)(%rdi),%r12
     85        mov     (0x18)(%rdi),%r13
     86        mov     (0x20)(%rdi),%r14
     87        mov     (0x28)(%rdi),%r15
     88        mov     (0x30)(%rdi),%rsp
     89        mov     (0x38)(%rdi),%r11
     90        mov     %esi, %eax
     91        test    %eax, %eax
     92        jnz     1f
     93        inc     %eax
     941:      mov     %r11,0(%rsp)
     95        ret
     96
     97
     98/* setjmp */
     99.global setjmp
     100.type setjmp,@function
     101setjmp:
     102        mov     (%rsp),%r11
     103        mov     %rbx,(0x00)(%rdi)
     104        mov     %rbp,(0x08)(%rdi)
     105        mov     %r12,(0x10)(%rdi)
     106        mov     %r13,(0x18)(%rdi)
     107        mov     %r14,(0x20)(%rdi)
     108        mov     %r15,(0x28)(%rdi)
     109        mov     %rsp,(0x30)(%rdi)
     110        mov     %r11,(0x38)(%rdi)
     111        mov     $0, %eax
     112        ret
Note: See TracChangeset for help on using the changeset viewer.