# HG changeset patch # User mroi # Date 1049552887 0 # Node ID 3492d41dc24771809f2c3d35e3e716a09b0d9e91 # Parent 175d5fef21e4f01c3b6aec46355449767a716ba0 vm_getbits should be in decoder.c, because 1) it is declared in decoder.h 2) this is needed to compile correctly without tracing enabled diff -r 175d5fef21e4 -r 3492d41dc247 decoder.c --- a/decoder.c Sat Apr 05 13:11:13 2003 +0000 +++ b/decoder.c Sat Apr 05 14:28:07 2003 +0000 @@ -34,6 +34,30 @@ #include #include "dvdnav_internal.h" +uint32_t vm_getbits(command_t *command, int start, int count) { + uint64_t result = 0; + uint64_t bit_mask=0xffffffffffffffff; /* I could put -1 instead */ + uint64_t examining = 0; + int32_t bits; + + if (count == 0) return 0; + + if ( ((start - count) < -1) || + (count > 32) || + (start > 63) || + (count < 0) || + (start < 0) ) { + fprintf(MSG_OUT, "libdvdnav: Bad call to vm_getbits. Parameter out of range\n"); + assert(0); + } + bit_mask >>= 63 - start; + bits = start + 1 - count; + examining = ((bit_mask >> bits) << bits ); + command->examined |= examining; + result = (command->instruction & bit_mask) >> bits; + return (uint32_t) result; +} + static uint16_t get_GPRM(registers_t* registers, uint8_t reg) { if (registers->GPRM_mode[reg] & 0x01) { struct timeval current_time, time_offset; diff -r 175d5fef21e4 -r 3492d41dc247 vmcmd.c --- a/vmcmd.c Sat Apr 05 13:11:13 2003 +0000 +++ b/vmcmd.c Sat Apr 05 14:28:07 2003 +0000 @@ -115,29 +115,6 @@ NULL, }; -uint32_t vm_getbits(command_t *command, int start, int count) { - uint64_t result = 0; - uint64_t bit_mask=0xffffffffffffffff; /* I could put -1 instead */ - uint64_t examining = 0; - int32_t bits; - if (count == 0) return 0; - - if ( ((start - count) < -1) || - (count > 32) || - (start > 63) || - (count < 0) || - (start < 0) ){ - fprintf(stderr, "Bad call to vm_getbits. Parameter out of range\n"); - assert(0); - } - bit_mask >>= 63 - start; - bits = start + 1 - count; - examining = ((bit_mask >> bits) << bits ); - command->examined |= examining; - result = (command->instruction & bit_mask) >> bits; - return (uint32_t) result; -} - static void print_system_reg(uint16_t reg) { if(reg < sizeof(system_reg_abbr_table) / sizeof(char *)) fprintf(MSG_OUT, "%s (SRPM:%d)", system_reg_table[reg], reg);