Rev 852 | Rev 958 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 852 | Rev 955 | ||
---|---|---|---|
Line 131... | Line 131... | ||
131 | 131 | ||
132 | #include <debug.h> |
132 | #include <debug.h> |
133 | /** Handle syscall userspace call */ |
133 | /** Handle syscall userspace call */ |
134 | static void syscall_exception(int n, struct exception_regdump *pstate) |
134 | static void syscall_exception(int n, struct exception_regdump *pstate) |
135 | { |
135 | { |
- | 136 | interrupts_enable(); |
|
136 | if (pstate->a3 < SYSCALL_END) |
137 | if (pstate->a3 < SYSCALL_END) |
137 | pstate->v0 = syscall_table[pstate->a3](pstate->a0, |
138 | pstate->v0 = syscall_table[pstate->a3](pstate->a0, |
138 | pstate->a1, |
139 | pstate->a1, |
139 | pstate->a2); |
140 | pstate->a2); |
140 | else |
141 | else |
141 | panic("Undefined syscall %d", pstate->a3); |
142 | panic("Undefined syscall %d", pstate->a3); |
- | 143 | interrupts_disable(); |
|
142 | pstate->epc += 4; |
144 | pstate->epc += 4; |
143 | } |
145 | } |
144 | 146 | ||
145 | 147 | ||
146 | void exception(struct exception_regdump *pstate) |
148 | void exception(struct exception_regdump *pstate) |