solaris_i386.s
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:1k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /=============================================================================
  2. / tas.s -- test and set lock for solaris_i386
  3. /=============================================================================
  4.         .file   "tas.s"
  5.         .text
  6.         .align  16
  7. .L1.text:
  8.         .globl  tas
  9. tas:
  10.         pushl   %ebp            /save prev base pointer
  11.         movl    %esp,%ebp       /new base pointer
  12.         pushl   %ebx            /save prev bx
  13.         movl    8(%ebp),%ebx    /load bx with address of lock
  14.         movl    $255,%eax       /put something in ax
  15.         xchgb   %al,(%ebx)      /swap lock value with "0"
  16.         cmpb    $0,%al          /did we get the lock?
  17.         jne     .Locked
  18.         subl    %eax,%eax       /yes, we got it -- return 0
  19.         jmp     .Finish
  20.         .align  4
  21. .Locked:
  22.         movl    $1,%eax         /no, we didn't get it - return 1
  23. .Finish:
  24.         popl    %ebx            /restore prev bx
  25.         movl    %ebp,%esp       /restore stack state
  26.         popl    %ebp
  27.         ret                     /return
  28.         .align  4
  29.         .type   tas,@function
  30.         .size   tas,.-tas