0001
0002
0003
0004
0005
0006 #ifndef _SELFTESTS_POWERPC_FPU_ASM_H
0007 #define _SELFTESTS_POWERPC_FPU_ASM_H
0008 #include "basic_asm.h"
0009
0010 #define PUSH_FPU(stack_size) \
0011 stfd f31,(stack_size + STACK_FRAME_MIN_SIZE)(%r1); \
0012 stfd f30,(stack_size + STACK_FRAME_MIN_SIZE - 8)(%r1); \
0013 stfd f29,(stack_size + STACK_FRAME_MIN_SIZE - 16)(%r1); \
0014 stfd f28,(stack_size + STACK_FRAME_MIN_SIZE - 24)(%r1); \
0015 stfd f27,(stack_size + STACK_FRAME_MIN_SIZE - 32)(%r1); \
0016 stfd f26,(stack_size + STACK_FRAME_MIN_SIZE - 40)(%r1); \
0017 stfd f25,(stack_size + STACK_FRAME_MIN_SIZE - 48)(%r1); \
0018 stfd f24,(stack_size + STACK_FRAME_MIN_SIZE - 56)(%r1); \
0019 stfd f23,(stack_size + STACK_FRAME_MIN_SIZE - 64)(%r1); \
0020 stfd f22,(stack_size + STACK_FRAME_MIN_SIZE - 72)(%r1); \
0021 stfd f21,(stack_size + STACK_FRAME_MIN_SIZE - 80)(%r1); \
0022 stfd f20,(stack_size + STACK_FRAME_MIN_SIZE - 88)(%r1); \
0023 stfd f19,(stack_size + STACK_FRAME_MIN_SIZE - 96)(%r1); \
0024 stfd f18,(stack_size + STACK_FRAME_MIN_SIZE - 104)(%r1); \
0025 stfd f17,(stack_size + STACK_FRAME_MIN_SIZE - 112)(%r1); \
0026 stfd f16,(stack_size + STACK_FRAME_MIN_SIZE - 120)(%r1); \
0027 stfd f15,(stack_size + STACK_FRAME_MIN_SIZE - 128)(%r1); \
0028 stfd f14,(stack_size + STACK_FRAME_MIN_SIZE - 136)(%r1);
0029
0030 #define POP_FPU(stack_size) \
0031 lfd f31,(stack_size + STACK_FRAME_MIN_SIZE)(%r1); \
0032 lfd f30,(stack_size + STACK_FRAME_MIN_SIZE - 8)(%r1); \
0033 lfd f29,(stack_size + STACK_FRAME_MIN_SIZE - 16)(%r1); \
0034 lfd f28,(stack_size + STACK_FRAME_MIN_SIZE - 24)(%r1); \
0035 lfd f27,(stack_size + STACK_FRAME_MIN_SIZE - 32)(%r1); \
0036 lfd f26,(stack_size + STACK_FRAME_MIN_SIZE - 40)(%r1); \
0037 lfd f25,(stack_size + STACK_FRAME_MIN_SIZE - 48)(%r1); \
0038 lfd f24,(stack_size + STACK_FRAME_MIN_SIZE - 56)(%r1); \
0039 lfd f23,(stack_size + STACK_FRAME_MIN_SIZE - 64)(%r1); \
0040 lfd f22,(stack_size + STACK_FRAME_MIN_SIZE - 72)(%r1); \
0041 lfd f21,(stack_size + STACK_FRAME_MIN_SIZE - 80)(%r1); \
0042 lfd f20,(stack_size + STACK_FRAME_MIN_SIZE - 88)(%r1); \
0043 lfd f19,(stack_size + STACK_FRAME_MIN_SIZE - 96)(%r1); \
0044 lfd f18,(stack_size + STACK_FRAME_MIN_SIZE - 104)(%r1); \
0045 lfd f17,(stack_size + STACK_FRAME_MIN_SIZE - 112)(%r1); \
0046 lfd f16,(stack_size + STACK_FRAME_MIN_SIZE - 120)(%r1); \
0047 lfd f15,(stack_size + STACK_FRAME_MIN_SIZE - 128)(%r1); \
0048 lfd f14,(stack_size + STACK_FRAME_MIN_SIZE - 136)(%r1);
0049
0050
0051
0052
0053
0054 FUNC_START(load_fpu)
0055 lfd f14,0(r3)
0056 lfd f15,8(r3)
0057 lfd f16,16(r3)
0058 lfd f17,24(r3)
0059 lfd f18,32(r3)
0060 lfd f19,40(r3)
0061 lfd f20,48(r3)
0062 lfd f21,56(r3)
0063 lfd f22,64(r3)
0064 lfd f23,72(r3)
0065 lfd f24,80(r3)
0066 lfd f25,88(r3)
0067 lfd f26,96(r3)
0068 lfd f27,104(r3)
0069 lfd f28,112(r3)
0070 lfd f29,120(r3)
0071 lfd f30,128(r3)
0072 lfd f31,136(r3)
0073 blr
0074 FUNC_END(load_fpu)
0075
0076 #endif