00001
00038 #include <assembler.h>
00039 #include <cpu/regs.h>
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 PUBLIC_FUNCTION(mmio_ccp_write8)
00052
00053 #if defined(__GNUC__)
00054
00055 ST_CPUREG(r1, RAMPZ)
00056 movw r30, r24
00057 ldi r18, CCP_IOREG
00058 ST_CPUREG(r18, CCP)
00059 st Z, r22
00060 ret
00061
00062 #elif defined(__IAR_SYSTEMS_ASM__)
00063
00064 ldi r20, 0
00065 ST_CPUREG(r20, RAMPZ)
00066 # if defined(CONFIG_MEMORY_MODEL_TINY)
00067 mov r31, r20
00068 mov r30, r16
00069 # else
00070 movw r30, r16
00071 # endif
00072 ldi r21, CCP_IOREG
00073 ST_CPUREG(r21, CCP)
00074 # if defined(CONFIG_MEMORY_MODEL_TINY)
00075 st Z, r17
00076 # elif defined(CONFIG_MEMORY_MODEL_SMALL)
00077 st Z, r18
00078 # elif defined(CONFIG_MEMORY_MODEL_LARGE)
00079 st Z, r19
00080 # else
00081 # error Unknown memory model in use, no idea how registers should be accessed
00082 # endif
00083 ret
00084
00085 #else
00086 # error Unknown assembler
00087 #endif
00088
00089 END_FUNC(mmio_ccp_write8)
00090 END_FILE()