| /* SPDX-License-Identifier: GPL-2.0-or-later */ |
| /* |
| * Copyright 2015, Cyril Bur, IBM Corp. |
| */ |
| |
| #include "basic_asm.h" |
| |
| /* |
| * Careful this will 'clobber' vsx (by design), VSX are always |
| * volatile though so unlike vmx this isn't so much of an issue |
| * Still should avoid calling from C |
| */ |
| FUNC_START(load_vsx) |
| li r5,0 |
| lxvd2x vs20,r5,r3 |
| addi r5,r5,16 |
| lxvd2x vs21,r5,r3 |
| addi r5,r5,16 |
| lxvd2x vs22,r5,r3 |
| addi r5,r5,16 |
| lxvd2x vs23,r5,r3 |
| addi r5,r5,16 |
| lxvd2x vs24,r5,r3 |
| addi r5,r5,16 |
| lxvd2x vs25,r5,r3 |
| addi r5,r5,16 |
| lxvd2x vs26,r5,r3 |
| addi r5,r5,16 |
| lxvd2x vs27,r5,r3 |
| addi r5,r5,16 |
| lxvd2x vs28,r5,r3 |
| addi r5,r5,16 |
| lxvd2x vs29,r5,r3 |
| addi r5,r5,16 |
| lxvd2x vs30,r5,r3 |
| addi r5,r5,16 |
| lxvd2x vs31,r5,r3 |
| blr |
| FUNC_END(load_vsx) |
| |
| FUNC_START(store_vsx) |
| li r5,0 |
| stxvd2x vs20,r5,r3 |
| addi r5,r5,16 |
| stxvd2x vs21,r5,r3 |
| addi r5,r5,16 |
| stxvd2x vs22,r5,r3 |
| addi r5,r5,16 |
| stxvd2x vs23,r5,r3 |
| addi r5,r5,16 |
| stxvd2x vs24,r5,r3 |
| addi r5,r5,16 |
| stxvd2x vs25,r5,r3 |
| addi r5,r5,16 |
| stxvd2x vs26,r5,r3 |
| addi r5,r5,16 |
| stxvd2x vs27,r5,r3 |
| addi r5,r5,16 |
| stxvd2x vs28,r5,r3 |
| addi r5,r5,16 |
| stxvd2x vs29,r5,r3 |
| addi r5,r5,16 |
| stxvd2x vs30,r5,r3 |
| addi r5,r5,16 |
| stxvd2x vs31,r5,r3 |
| blr |
| FUNC_END(store_vsx) |