> Now I have some probem with the exception handle. I found the funciton > "do_interrupt" in "target-arm/helper.c" and "gen_exception" in > "target-arm/translate.c" seems to handle the exceptions. But I am comfused > with those two functions, which function will do the really work about > generating an exception. As my understanding, I think “do_interrupt” seems > to do some preparations before enter exceptions just like operate some > registers and accumulate the exception handler address. And "gen_exception" > seems to do the read job to generate a exception. But I'm not sure.
Interrupt is a "external" source which breaks the current execution flow of the CPU. For example, a device might raise an interrupt so that CPU can know the device has completed its task. On the other hand, exception is an "internal" source which breaks the current execution flow of the CPU. Take divide by zero as an example, CPU will detect this error (occurred in the CPU itself). So depends on what you mean "exception", do_interrupt or gen_exception might does the real work. Regards, chenwj -- Wei-Ren Chen (陳韋任) Computer Systems Lab, Institute of Information Science, Academia Sinica, Taiwan (R.O.C.) Tel:886-2-2788-3799 #1667 Homepage: http://people.cs.nctu.edu.tw/~chenwj