00001
00038 #ifndef CPU_REGS_H_INCLUDED
00039 #define CPU_REGS_H_INCLUDED
00040
00041 #include <io.h>
00042
00043 #define CPUR_RAMPZ 0x5b //!< Extended Z Pointer
00044 #define CPUR_EIND 0x5c //!< Extended Indirect
00045 #define CPUR_SPL 0x5d //!< Stack Pointer Low
00046 #define CPUR_SPH 0x5e //!< Stack Pointer High
00047 #define CPUR_SREG 0x5f //!< Status Register
00048 # define CPUR_SREG_I (1 << 7) //!< Interrupt Enable
00049 # define CPUR_SREG_T (1 << 6) //!< Bit Copy Storage
00050 # define CPUR_SREG_H (1 << 5) //!< Half Carry
00051 # define CPUR_SREG_S (1 << 4) //!< Sign
00052 # define CPUR_SREG_V (1 << 3) //!< Overflow
00053 # define CPUR_SREG_N (1 << 2) //!< Negative
00054 # define CPUR_SREG_Z (1 << 1) //!< Zero
00055 # define CPUR_SREG_C (1 << 0) //!< Carry
00056
00057 #ifndef __ASSEMBLY__
00058
00062 #define cpu_read_reg8(reg) \
00063 mmio_read8((void *)(CPUR_##reg))
00064
00068 #define cpu_write_reg8(reg, value) \
00069 mmio_write8((void *)(CPUR_##reg), value)
00070
00071 #else
00072
00073 #define LD_CPUREG(val, name) in val, CPUR_##name - AVR_MMIO_OFFSET
00074 #define ST_CPUREG(val, name) out CPUR_##name - AVR_MMIO_OFFSET, val
00075
00076 #endif
00077
00078 #endif