1:         .data
   2:         .asciz  "@(#)ocsum.s 4.4 83/08/16 Copyr 1983 Sun Micro"
   3:         .even
   4:         .text
   5: 
   6: |       Copyright (c) 1983 by Sun Microsystems, Inc.
   7: 
   8: | Do a 16 bit one's complement sum of a given number of words
   9: | The word pointer may not be odd
  10:         .globl  _ocsum
  11: _ocsum:
  12:         movl    sp@(4),a0	| get ptr
  13:         movl    sp@(8),d0	| get word count
  14:         movl    d2,sp@-		| save a reg
  15:         movl    d0,d2           | save the count
  16:         lsrl    #1,d0           | make d0 longs
  17:         movl    #0,d1           | zero accumulator
  18:         jra     1$              | into loop
  19: | Here we run in 68010 loop mode until we get a carry
  20: 2$:     addl    a0@+,d1		| add in long
  21: 1$:     dbcs    d0,2$           | continue until carry or done
  22:         jcc     3$              | if no carry, we're done
  23:         addql   #1,d1           | add in carry
  24:         jra     1$              | and go back to test for carry again
  25: 3$:     btst    #0,d2           | another short?
  26:         jeq     ret             | no, go away
  27:         movl    #0,d0           | must do unsigned add
  28:         movw    a0@,d0		| get the short
  29:         addl    d0,d1           | add it in
  30:         jcc     ret
  31:         addql   #1,d1
  32: | Now add in high word to low word as above
  33: ret:
  34:         movl    d1,d0
  35:         lsrl    #8,d0           | get high word in d0
  36:         lsrl    #8,d0           | and clear high do as well
  37:         andl    #0xFFFF,d1      | clear high d1
  38:         addw    d1,d0           | add in just the low word
  39:         movl    #0,d1           | doesn't clear x bit
  40:         addxw   d1,d0           | add in final carry
  41:         movl    sp@+,d2		| restore reg
  42:         rts                     | all done

Defined functions

_ocsum declared in line 10; defined in line 11; used 3 times
ret defined in line 33; used 2 times
Last modified: 1985-06-13
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 611
Valid CSS Valid XHTML 1.0 Strict