This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
dev:crosscompiler:backend_arm:code_generator [2021/07/27 08:25] – [Exception Stackframe] ursgraf | dev:crosscompiler:backend_arm:code_generator [2022/12/20 11:34] (current) – [Accessing the Hardware] ursgraf | ||
---|---|---|---|
Line 16: | Line 16: | ||
\\ | \\ | ||
===== Exception Stackframe ===== | ===== Exception Stackframe ===== | ||
- | In case of an exception all volatile GPRs together with LR must be saved. The Further, the nonvolatile GPRs which are used in this method must be saved as well. \\ | + | In case of an exception all volatile GPRs together with LR must be saved. The scratch register R6 must be saved first, because it is used to save the original stack pointer before any other registers can be pushed. The nonvolatile GPRs which are used in this method must be saved as well. \\ |
EXTR's need no saving, as they are not allowed to be used in exceptions. If an exception method calls a method where EXTR are used (e.g. in an interrupt handler or in a timer subclass) you have to use '' | EXTR's need no saving, as they are not allowed to be used in exceptions. If an exception method calls a method where EXTR are used (e.g. in an interrupt handler or in a timer subclass) you have to use '' | ||
Line 42: | Line 42: | ||
===== Accessing the Hardware ===== | ===== Accessing the Hardware ===== | ||
- | Java does not allow direct access and manipulation of absolute memory locations. Nevertheless this is essential for embedded programming. We therefore include this possibility by using a special class //ch.ntb.inf.deep.unsafe.arm.US.java// | + | Java does not allow direct access and manipulation of absolute memory locations. Nevertheless this is essential for embedded programming. We therefore include this possibility by using a special class //org.deepjava.unsafe.arm.US.java// |
===== Low Level Classes ===== | ===== Low Level Classes ===== |