Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int getbits(hm2_sserial_tram_t *tram, u64 *val, int start, int len){
- long long user0 = (tram->reg_0_read == NULL)? 0 : *tram->reg_0_read;
- long long user1 = (tram->reg_1_read == NULL)? 0 : *tram->reg_1_read;
- long long user2 = (tram->reg_2_read == NULL)? 0 : *tram->reg_2_read;
- long long mask = (1 << len) - 1;
- if (start + len <= 32){
- *val = (user0 >> start) & mask;
- } else if (start + len <= 64){
- if (start >= 32){
- *val = (user1 >> (start - 32)) & mask;
- } else {
- *val = (((user1 << 32) | user0) >> start ) & mask;
- }
- } else {
- if (start >= 64){
- *val = (user2 >> (start - 64)) & mask;
- } else if (start >= 32) {
- *val = (((user2 << 32) | user1) >> (start - 32)) & mask;
- } else {
- *val = ((user2 << (64 - start)) | (user1 << (32 - start))
- | (user0 >> start)) & mask;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement