| 
					
				 | 
			
			
				@@ -236,3 +236,138 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	PM_SYS_PUSH(10, PINT2_ASSIGN) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	PM_SYS_PUSH(11, PINT3_ASSIGN) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	PM_SYS_PUSH(12, PINT0_INVERT_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_PUSH(13, PINT1_INVERT_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_PUSH_SYNC(13) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_PUSH(0, PINT2_INVERT_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_PUSH(1, PINT3_INVERT_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_PUSH(2, PINT0_EDGE_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_PUSH(3, PINT1_EDGE_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_PUSH(4, PINT2_EDGE_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_PUSH(5, PINT3_EDGE_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef SYSCR 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_PUSH16(6, SYSCR) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef EBIU_AMGCTL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_PUSH16(7, EBIU_AMGCTL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_PUSH(8, EBIU_AMBCTL0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_PUSH(9, EBIU_AMBCTL1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef EBIU_FCTL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_PUSH(10, EBIU_MBSCTL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_PUSH(11, EBIU_MODE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_PUSH(12, EBIU_FCTL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_PUSH_SYNC(12) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_PUSH_SYNC(9) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.endm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.macro bfin_sys_mmr_restore 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* Restore System MMRs */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	FP.H = hi(SYSMMR_BASE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	FP.L = lo(SYSMMR_BASE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef EBIU_FCTL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_POP_SYNC(12) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(12, EBIU_FCTL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(11, EBIU_MODE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(10, EBIU_MBSCTL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_POP_SYNC(9) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef EBIU_AMGCTL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(9, EBIU_AMBCTL1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(8, EBIU_AMBCTL0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP16(7, EBIU_AMGCTL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef SYSCR 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP16(6, SYSCR) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef PINT0_ASSIGN 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(5, PINT3_EDGE_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(4, PINT2_EDGE_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(3, PINT1_EDGE_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(2, PINT0_EDGE_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(1, PINT3_INVERT_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(0, PINT2_INVERT_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_POP_SYNC(13) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(13, PINT1_INVERT_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(12, PINT0_INVERT_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(11, PINT3_ASSIGN) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(10, PINT2_ASSIGN) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(9, PINT1_ASSIGN) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(8, PINT0_ASSIGN) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(7, PINT3_MASK_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(6, PINT2_MASK_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(5, PINT1_MASK_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(4, PINT0_MASK_SET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef SIC_IWR2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(3, SIC_IWR2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef SIC_IWR1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(2, SIC_IWR1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef SIC_IWR0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(1, SIC_IWR0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef SIC_IWR 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(1, SIC_IWR) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef SIC_IAR11 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(0, SIC_IAR11) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_POP_SYNC(13) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef SIC_IAR8 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(13, SIC_IAR10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(12, SIC_IAR9) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(11, SIC_IAR8) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef SIC_IAR7 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(10, SIC_IAR7) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef SIC_IAR6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(9, SIC_IAR6) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(8, SIC_IAR5) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(7, SIC_IAR4) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef SIC_IAR3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(6, SIC_IAR3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef SIC_IAR0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(5, SIC_IAR2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(4, SIC_IAR1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(3, SIC_IAR0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef SIC_IMASK0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# ifdef SIC_IMASK2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(2, SIC_IMASK2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(1, SIC_IMASK1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(0, SIC_IMASK0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# ifdef SIC_IMASK 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PM_SYS_POP(0, SIC_IMASK) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.endm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.macro bfin_core_mmr_save 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/* Save Core MMRs */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	I0.H = hi(COREMMR_BASE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	I0.L = lo(COREMMR_BASE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	I1 = I0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	I2 = I0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	I3 = I0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	B0 = I0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	B1 = I0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	B2 = I0; 
			 |