1
0

HAL_DIV.c 522 B

12345678910111213141516171819202122
  1. #include "HAL_DIV.h"
  2. //Computes q = b div c and a = b mod c
  3. //cDigits must be 1, and *c < 0xffffffff
  4. void hardwareNN_Div_q32(UINT32 *q,UINT32 *a,UINT32 *b,UINT32 bDigits,UINT32 *c,UINT32 cDigits)
  5. {
  6. UINT32 * p;
  7. int i;
  8. DIV->REMAIN = 0;
  9. DIV->DIVISOR = *c;
  10. for(i = (bDigits-1); i >= 0 ; i -- )
  11. {
  12. p = (UINT32*) (b + i);
  13. DIV->DIVIDENED = *p;
  14. while((DIV->STATUS&0x01)!=0x01);
  15. DIV->STATUS = 0x01;
  16. (*(q+i)) = (UINT32)DIV->QUOTIENT;
  17. }
  18. (*a) = DIV->REMAIN;
  19. }