arm timer fix
. set 'done' once initialized so 32-bit read frc works, thanks to keesj . make sure the software-implemented upper 32 bit of the 64-bit "tsc" value works OK by adding an assert in one of its calls Change-Id: I5ce24fea919f4610c6a86ac7ec9f04b1815620c2
This commit is contained in:
		
							parent
							
								
									718114d9b0
								
							
						
					
					
						commit
						8e7c0604bd
					
				@ -10,6 +10,8 @@
 | 
			
		||||
#include "kernel/glo.h"
 | 
			
		||||
#include "kernel/profile.h"
 | 
			
		||||
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "kernel/spinlock.h"
 | 
			
		||||
 | 
			
		||||
@ -61,6 +63,7 @@ void context_stop(struct proc * p)
 | 
			
		||||
	u64_t * __tsc_ctr_switch = get_cpulocal_var_ptr(tsc_ctr_switch);
 | 
			
		||||
 | 
			
		||||
	read_tsc_64(&tsc);
 | 
			
		||||
	assert(tsc >= *__tsc_ctr_switch);
 | 
			
		||||
	tsc_delta = tsc - *__tsc_ctr_switch;
 | 
			
		||||
	p->p_cycles += tsc_delta;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -198,6 +198,7 @@ void omap3_frclock_init(void)
 | 
			
		||||
    /* Start timer */
 | 
			
		||||
    mmio_set(fr_timer.base + fr_timer.regs->TCLR,
 | 
			
		||||
            OMAP3_TCLR_OVF_TRG|OMAP3_TCLR_AR|OMAP3_TCLR_ST|OMAP3_TCLR_PRE);
 | 
			
		||||
    done = 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void omap3_frclock_stop()
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user