/* * Theory of operation * ------------------- * * This file provides the core code for a forward memory copy used in * the implementation of memcopy(), copy_to_user() and copy_from_user(). * * The including file must define the following accessor macros * according to the need of the given function: * * ldr1w ptr reg abort * * This loads one word from 'ptr', stores it in 'reg' and increments * 'ptr' to the next word. The 'abort' argument is used for fixup tables. * * ldr4w ptr reg1 reg2 reg3 reg4 abort * ldr8w ptr, reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort * * This loads four or eight words starting from 'ptr', stores them * in provided registers and increments 'ptr' past those words. * The'abort' argument is used for fixup tables. * * ldr1b ptr reg cond abort * * Similar to ldr1w, but it loads a byte and increments 'ptr' one byte. * It also must apply the condition code if provided, otherwise the * "al" condition is assumed by default. * * str1w ptr reg abort * str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort * str1b ptr reg cond abort * * Same as their ldr* counterparts, but data is stored to 'ptr' location * rather than being loaded. * * enter reg1 reg2 * * Preserve the provided registers on the stack plus any additional * data as needed by the implementation including this code. Called * upon code entry. * * usave reg1 reg2 * * Unwind annotation macro is corresponding for 'enter' macro. * It tell unwinder that preserved some provided registers on the stack * and additional data by a prior 'enter' macro. * * exit reg1 reg2 * * Restore registers with the values previously saved with the * 'preserv' macro. Called upon code termination. * * LDR1W_SHIFT * STR1W_SHIFT * * Correction to be applied to the "ip" register when branching into * the ldr1w or str1w instructions (some of these macros may expand to * than one 32bit instruction in Thumb-2)
*/
UNWIND( .fnstart )
enter r4, UNWIND(fpreg,) lr
UNWIND( .setfp fpreg, sp )
UNWIND( mov fpreg, sp )
/* * Abort preamble and completion macros. * If a fixup handler is required then those macros must surround it. * It is assumed that the fixup code will handle the private part of * the exit macro.
*/
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.