cregit-Linux how code gets into the kernel

Release 4.10 tools/testing/selftests/powerpc/include/instructions.h

#ifndef _SELFTESTS_POWERPC_INSTRUCTIONS_H

#define _SELFTESTS_POWERPC_INSTRUCTIONS_H

#include <stdio.h>
#include <stdlib.h>

/* This defines the "copy" instruction from Power ISA 3.0 Book II, section 4.4. */

#define __COPY(RA, RB, L) \
	(0x7c00060c | (RA) << (31-15) | (RB) << (31-20) | (L) << (31-10))

#define COPY(RA, RB, L) \
	.long __COPY((RA), (RB), (L))


static inline void copy(void *i) { asm volatile(str(COPY(0, %0, 0))";" : : "b" (i) : "memory" ); }

Contributors

PersonTokensPropCommitsCommitProp
chris smartchris smart14100.00%1100.00%
Total14100.00%1100.00%


static inline void copy_first(void *i) { asm volatile(str(COPY(0, %0, 1))";" : : "b" (i) : "memory" ); }

Contributors

PersonTokensPropCommitsCommitProp
chris smartchris smart14100.00%1100.00%
Total14100.00%1100.00%

/* This defines the "paste" instruction from Power ISA 3.0 Book II, section 4.4. */ #define __PASTE(RA, RB, L, RC) \ (0x7c00070c | (RA) << (31-15) | (RB) << (31-20) | (L) << (31-10) | (RC) << (31-31)) #define PASTE(RA, RB, L, RC) \ .long __PASTE((RA), (RB), (L), (RC))
static inline int paste(void *i) { int cr; asm volatile(str(PASTE(0, %1, 0, 0))";" "mfcr %0;" : "=r" (cr) : "b" (i) : "memory" ); return cr; }

Contributors

PersonTokensPropCommitsCommitProp
chris smartchris smart20100.00%1100.00%
Total20100.00%1100.00%


static inline int paste_last(void *i) { int cr; asm volatile(str(PASTE(0, %1, 1, 1))";" "mfcr %0;" : "=r" (cr) : "b" (i) : "memory" ); return cr; }

Contributors

PersonTokensPropCommitsCommitProp
chris smartchris smart20100.00%1100.00%
Total20100.00%1100.00%

#define PPC_INST_COPY __COPY(0, 0, 0) #define PPC_INST_COPY_FIRST __COPY(0, 0, 1) #define PPC_INST_PASTE __PASTE(0, 0, 0, 0) #define PPC_INST_PASTE_LAST __PASTE(0, 0, 1, 1) #endif /* _SELFTESTS_POWERPC_INSTRUCTIONS_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
chris smartchris smart153100.00%1100.00%
Total153100.00%1100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.