Fix Linux task preemption on Versatile board
Recent versions of the Linux kernel will not preempt CPU-intensive tasks unless the clock used by sched_clock() works. On -M versatilepb that's the 24MHz timer in the system controller. It's a very simple timer, so implement it. Signed-off-by: Daniel Jacobowitz <dan@codesourcery.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
		
							parent
							
								
									fad8c772ef
								
							
						
					
					
						commit
						042eb37a04
					
				| @ -7,6 +7,8 @@ | ||||
|  * This code is licenced under the GPL. | ||||
|  */ | ||||
| 
 | ||||
| #include "hw.h" | ||||
| #include "qemu-timer.h" | ||||
| #include "sysbus.h" | ||||
| #include "primecell.h" | ||||
| #include "sysemu.h" | ||||
| @ -71,8 +73,7 @@ static uint32_t arm_sysctl_read(void *opaque, target_phys_addr_t offset) | ||||
|     case 0x58: /* BOOTCS */ | ||||
|         return 0; | ||||
|     case 0x5c: /* 24MHz */ | ||||
|         /* ??? not implemented.  */ | ||||
|         return 0; | ||||
|         return muldiv64(qemu_get_clock(vm_clock), 24000000, get_ticks_per_sec()); | ||||
|     case 0x60: /* MISC */ | ||||
|         return 0; | ||||
|     case 0x84: /* PROCID0 */ | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Daniel Jacobowitz
						Daniel Jacobowitz