Changeset 95 for trunk/hal/tsar_mips32/core/hal_special.c
- Timestamp:
- Jun 29, 2017, 1:40:15 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/hal/tsar_mips32/core/hal_special.c
r62 r95 42 42 43 43 ///////////////////////// 44 uint32_t hal_time_stamp() 45 { 46 uint32_t cycles; 47 48 asm volatile ("mfc0 %0, $9 " : "=&r" (cycles)); 49 44 uint64_t hal_get_cycles() 45 { 46 uint64_t cycles; // absolute time to be returned 47 uint32_t last_count; // last registered cycles count 48 uint32_t current_count; // current cycles count 49 uint32_t elapsed; 50 51 core_t * core = CURRENT_THREAD->core; 52 53 // get last registered time stamp 54 last_count = core->time_stamp; 55 56 // get current time stamp from hardware register 57 asm volatile ("mfc0 %0, $9 " : "=&r" (current_count)); 58 59 // compute number of elapsed cycles, taking into account 32 bits register wrap 60 if(current_count < last_count) elapsed = (0xFFFFFFFF - last_count) + current_count; 61 else elapsed = current_count - last_count; 62 63 // compute absolute time 64 cycles = core->cycles + elapsed; 65 66 // update core time 67 core->time_stamp = current_count; 68 core->cycles = cycles; 69 70 hal_wbflush(); 71 50 72 return cycles; 51 73 }
Note: See TracChangeset
for help on using the changeset viewer.