diff options
Diffstat (limited to 'firmware/system.c')
-rw-r--r-- | firmware/system.c | 87 |
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 | |||
987 | interrupt_handler_t interrupt_vector[0x1d] __attribute__ ((section(".idata"))); | ||
988 | |||
989 | #define IRQ_REG(reg) (*(volatile unsigned long *)(0x80300000 + (reg))) | ||
990 | |||
991 | static 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 | |||
1011 | static void undefined_int(void) | ||
1012 | { | ||
1013 | } | ||
1014 | |||
1015 | void irq(void) | ||
1016 | { | ||
1017 | int n = irq_read(0x100) >> 3; | ||
1018 | (*(interrupt_vector[n]))(); | ||
1019 | } | ||
1020 | |||
1021 | void fiq(void) | ||
1022 | { | ||
1023 | } | ||
1024 | |||
1025 | void irq_enable_int(int n) | ||
1026 | { | ||
1027 | IRQ_WRITE_WAIT(0x404 + n * 4, 0x4010000, v & 0x10000); | ||
1028 | } | ||
1029 | |||
1030 | void irq_set_int_handler(int n, interrupt_handler_t handler) | ||
1031 | { | ||
1032 | interrupt_vector[n + 1] = handler; | ||
1033 | } | ||
1034 | |||
1035 | void 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 | |||
1060 | void system_reboot(void) | ||
1061 | { | ||
1062 | (*(volatile unsigned long *)0x80002804) = 1; | ||
1063 | while (1); | ||
1064 | } | ||
1065 | |||
1066 | int 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 | ||