summaryrefslogtreecommitdiff
path: root/firmware/system.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/system.c')
-rw-r--r--firmware/system.c87
1 files changed, 0 insertions, 87 deletions
diff --git a/firmware/system.c b/firmware/system.c
index a9c9d9e350..f233376219 100644
--- a/firmware/system.c
+++ b/firmware/system.c
@@ -982,93 +982,6 @@ int system_memory_guard(int newmode)
982 return 0; 982 return 0;
983} 983}
984 984
985#elif CONFIG_CPU==PNX0101
986
987interrupt_handler_t interrupt_vector[0x1d] __attribute__ ((section(".idata")));
988
989#define IRQ_REG(reg) (*(volatile unsigned long *)(0x80300000 + (reg)))
990
991static inline unsigned long irq_read(int reg)
992{
993 unsigned long v, v2;
994 do
995 {
996 v = IRQ_REG(reg);
997 v2 = IRQ_REG(reg);
998 } while (v != v2);
999 return v;
1000}
1001
1002#define IRQ_WRITE_WAIT(reg, val, cond) \
1003 do { unsigned long v, v2; \
1004 do { \
1005 IRQ_REG(reg) = (val); \
1006 v = IRQ_REG(reg); \
1007 v2 = IRQ_REG(reg); \
1008 } while ((v != v2) || !(cond)); \
1009 } while (0);
1010
1011static void undefined_int(void)
1012{
1013}
1014
1015void irq(void)
1016{
1017 int n = irq_read(0x100) >> 3;
1018 (*(interrupt_vector[n]))();
1019}
1020
1021void fiq(void)
1022{
1023}
1024
1025void irq_enable_int(int n)
1026{
1027 IRQ_WRITE_WAIT(0x404 + n * 4, 0x4010000, v & 0x10000);
1028}
1029
1030void irq_set_int_handler(int n, interrupt_handler_t handler)
1031{
1032 interrupt_vector[n + 1] = handler;
1033}
1034
1035void system_init(void)
1036{
1037 int i;
1038
1039 /* turn off watchdog */
1040 (*(volatile unsigned long *)0x80002804) = 0;
1041
1042 /*
1043 IRQ_WRITE_WAIT(0x100, 0, v == 0);
1044 IRQ_WRITE_WAIT(0x104, 0, v == 0);
1045 IRQ_WRITE_WAIT(0, 0, v == 0);
1046 IRQ_WRITE_WAIT(4, 0, v == 0);
1047 */
1048
1049 for (i = 0; i < 0x1c; i++)
1050 {
1051 IRQ_WRITE_WAIT(0x404 + i * 4, 0x1e000001, (v & 0x3010f) == 1);
1052 IRQ_WRITE_WAIT(0x404 + i * 4, 0x4000000, (v & 0x10000) == 0);
1053 IRQ_WRITE_WAIT(0x404 + i * 4, 0x10000001, (v & 0xf) == 1);
1054 interrupt_vector[i + 1] = undefined_int;
1055 }
1056 interrupt_vector[0] = undefined_int;
1057}
1058
1059
1060void system_reboot(void)
1061{
1062 (*(volatile unsigned long *)0x80002804) = 1;
1063 while (1);
1064}
1065
1066int system_memory_guard(int newmode)
1067{
1068 (void)newmode;
1069 return 0;
1070}
1071
1072#endif /* CPU_ARM */ 985#endif /* CPU_ARM */
1073#endif /* CONFIG_CPU */ 986#endif /* CONFIG_CPU */
1074 987