udivsi3.S 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. /* $OpenBSD: udivsi3.S,v 1.1 2013/06/07 17:31:31 miod Exp $ */
  2. /*
  3. * Copyright (c) 2013 Miodrag Vallat.
  4. *
  5. * Permission to use, copy, modify, and distribute this software for any
  6. * purpose with or without fee is hereby granted, provided that the above
  7. * copyright notice and this permission notice appear in all copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  10. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  11. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  12. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  13. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  14. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  15. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  16. */
  17. #include <machine/asm.h>
  18. /*
  19. * uint __udivsi3(uint n, uint d);
  20. */
  21. ENTRY(__udivsi3)
  22. /* if divider is zero, trap */
  23. bcnd ne0, %r3, 1f
  24. tb0 0, %r0, 503
  25. 1:
  26. jmp.n %r1
  27. divu %r2, %r2, %r3
  28. END(__udivsi3)