1#ifndef ASM_X86_SERPENT_H 2#define ASM_X86_SERPENT_H 3 4#include <linux/crypto.h> 5#include <crypto/serpent.h> 6 7#ifdef CONFIG_X86_32 8 9#define SERPENT_PARALLEL_BLOCKS 4 10 11asmlinkage void __serpent_enc_blk_4way(struct serpent_ctx *ctx, u8 *dst, 12 const u8 *src, bool xor); 13asmlinkage void serpent_dec_blk_4way(struct serpent_ctx *ctx, u8 *dst, 14 const u8 *src); 15 16static inline void serpent_enc_blk_xway(struct serpent_ctx *ctx, u8 *dst, 17 const u8 *src) 18{ 19 __serpent_enc_blk_4way(ctx, dst, src, false); 20} 21 22static inline void serpent_enc_blk_xway_xor(struct serpent_ctx *ctx, u8 *dst, 23 const u8 *src) 24{ 25 __serpent_enc_blk_4way(ctx, dst, src, true); 26} 27 28static inline void serpent_dec_blk_xway(struct serpent_ctx *ctx, u8 *dst, 29 const u8 *src) 30{ 31 serpent_dec_blk_4way(ctx, dst, src); 32} 33 34#else 35 36#define SERPENT_PARALLEL_BLOCKS 8 37 38asmlinkage void __serpent_enc_blk_8way(struct serpent_ctx *ctx, u8 *dst, 39 const u8 *src, bool xor); 40asmlinkage void serpent_dec_blk_8way(struct serpent_ctx *ctx, u8 *dst, 41 const u8 *src); 42 43static inline void serpent_enc_blk_xway(struct serpent_ctx *ctx, u8 *dst, 44 const u8 *src) 45{ 46 __serpent_enc_blk_8way(ctx, dst, src, false); 47} 48 49static inline void serpent_enc_blk_xway_xor(struct serpent_ctx *ctx, u8 *dst, 50 const u8 *src) 51{ 52 __serpent_enc_blk_8way(ctx, dst, src, true); 53} 54 55static inline void serpent_dec_blk_xway(struct serpent_ctx *ctx, u8 *dst, 56 const u8 *src) 57{ 58 serpent_dec_blk_8way(ctx, dst, src); 59} 60 61#endif 62 63#endif 64