Advertisement
Guest User

Untitled

a guest
Oct 17th, 2011
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1.  
  2. int getbits(hm2_sserial_tram_t *tram, u64 *val, int start, int len){
  3. long long user0 = (tram->reg_0_read == NULL)? 0 : *tram->reg_0_read;
  4. long long user1 = (tram->reg_1_read == NULL)? 0 : *tram->reg_1_read;
  5. long long user2 = (tram->reg_2_read == NULL)? 0 : *tram->reg_2_read;
  6. long long mask = (1 << len) - 1;
  7.  
  8. if (start + len <= 32){
  9. *val = (user0 >> start) & mask;
  10. } else if (start + len <= 64){
  11. if (start >= 32){
  12. *val = (user1 >> (start - 32)) & mask;
  13. } else {
  14. *val = (((user1 << 32) | user0) >> start ) & mask;
  15. }
  16. } else {
  17. if (start >= 64){
  18. *val = (user2 >> (start - 64)) & mask;
  19. } else if (start >= 32) {
  20. *val = (((user2 << 32) | user1) >> (start - 32)) & mask;
  21. } else {
  22. *val = ((user2 << (64 - start)) | (user1 << (32 - start))
  23. | (user0 >> start)) & mask;
  24. }
  25. }
  26. return 0;
  27. }
  28.  
  29.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement