 c8f3b10909
			
		
	
	
		c8f3b10909
		
	
	
	
	
		
			
			. also disable stack protection feature for gcc, causes build errors for pkgsrc gcc on minix Change-Id: I1c6e2bcb4d948098d642543d7b2711284ee55c72
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <assert.h>
 | |
| #include <sys/types.h>
 | |
| #include <machine/cpu.h>
 | |
| #include <minix/type.h>
 | |
| #include <io.h>
 | |
| 
 | |
| #include "kernel/kernel.h"
 | |
| #include "kernel/proc.h"
 | |
| #include "kernel/vm.h"
 | |
| #include "kernel/proto.h"
 | |
| #include "arch_proto.h"
 | |
| #include "omap_reset.h"
 | |
| 
 | |
| #ifdef AM335X
 | |
| #define CM_BASE 0x44E00000
 | |
| #define CM_SIZE 0x1000
 | |
| #define PRM_DEVICE_OFFSET 0xf00
 | |
| #define PRM_RSTCTRL_REG 0x00
 | |
| #define RST_GLOBAL_WARM_SW_BIT 0 
 | |
| #elif DM37XX
 | |
| #define CM_BASE 0x48307000
 | |
| #define CM_SIZE 0x1000
 | |
| #define PRM_RSTCTRL_REG 0x250
 | |
| #define RST_DPLL3_BIT 2
 | |
| #else
 | |
| #define CM_BASE 0x00000000
 | |
| #define CM_SIZE 0x1000
 | |
| #endif
 | |
| 
 | |
| struct omap_reset
 | |
| {
 | |
| 	vir_bytes base;
 | |
| 	vir_bytes size;
 | |
| };
 | |
| 
 | |
| static struct omap_reset omap_reset = {
 | |
| 	.base = CM_BASE,
 | |
| 	.size = CM_SIZE
 | |
| };
 | |
| 
 | |
| static kern_phys_map reset_phys_map;
 | |
| 
 | |
| void
 | |
| omap3_reset_init(void)
 | |
| {
 | |
| #if defined(AM335X) || defined(DM37XX)
 | |
| 	kern_phys_map_ptr(omap_reset.base, omap_reset.size, &reset_phys_map,
 | |
| 	    (vir_bytes) &omap_reset.base);
 | |
| #endif /* AM335X || DM37XX */
 | |
| }
 | |
| 
 | |
| void
 | |
| omap3_reset(void)
 | |
| {
 | |
| #ifdef AM335X
 | |
| 	mmio_set((omap_reset.base + PRM_DEVICE_OFFSET + PRM_RSTCTRL_REG), (1 << RST_GLOBAL_WARM_SW_BIT));
 | |
| #elif DM37XX
 | |
| 	mmio_set((omap_reset.base + PRM_RSTCTRL_REG), (1 << RST_DPLL3_BIT));
 | |
| #endif
 | |
| }
 |