18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Copyright 2015, Cyril Bur, IBM Corp.
48c2ecf20Sopenharmony_ci */
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ci#include "basic_asm.h"
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci/*
98c2ecf20Sopenharmony_ci * Careful this will 'clobber' vsx (by design), VSX are always
108c2ecf20Sopenharmony_ci * volatile though so unlike vmx this isn't so much of an issue
118c2ecf20Sopenharmony_ci * Still should avoid calling from C
128c2ecf20Sopenharmony_ci */
138c2ecf20Sopenharmony_ciFUNC_START(load_vsx)
148c2ecf20Sopenharmony_ci	li	r5,0
158c2ecf20Sopenharmony_ci	lxvd2x	vs20,r5,r3
168c2ecf20Sopenharmony_ci	addi	r5,r5,16
178c2ecf20Sopenharmony_ci	lxvd2x	vs21,r5,r3
188c2ecf20Sopenharmony_ci	addi	r5,r5,16
198c2ecf20Sopenharmony_ci	lxvd2x	vs22,r5,r3
208c2ecf20Sopenharmony_ci	addi	r5,r5,16
218c2ecf20Sopenharmony_ci	lxvd2x	vs23,r5,r3
228c2ecf20Sopenharmony_ci	addi	r5,r5,16
238c2ecf20Sopenharmony_ci	lxvd2x	vs24,r5,r3
248c2ecf20Sopenharmony_ci	addi	r5,r5,16
258c2ecf20Sopenharmony_ci	lxvd2x	vs25,r5,r3
268c2ecf20Sopenharmony_ci	addi	r5,r5,16
278c2ecf20Sopenharmony_ci	lxvd2x	vs26,r5,r3
288c2ecf20Sopenharmony_ci	addi	r5,r5,16
298c2ecf20Sopenharmony_ci	lxvd2x	vs27,r5,r3
308c2ecf20Sopenharmony_ci	addi	r5,r5,16
318c2ecf20Sopenharmony_ci	lxvd2x	vs28,r5,r3
328c2ecf20Sopenharmony_ci	addi	r5,r5,16
338c2ecf20Sopenharmony_ci	lxvd2x	vs29,r5,r3
348c2ecf20Sopenharmony_ci	addi	r5,r5,16
358c2ecf20Sopenharmony_ci	lxvd2x	vs30,r5,r3
368c2ecf20Sopenharmony_ci	addi	r5,r5,16
378c2ecf20Sopenharmony_ci	lxvd2x	vs31,r5,r3
388c2ecf20Sopenharmony_ci	blr
398c2ecf20Sopenharmony_ciFUNC_END(load_vsx)
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ciFUNC_START(store_vsx)
428c2ecf20Sopenharmony_ci	li	r5,0
438c2ecf20Sopenharmony_ci	stxvd2x	vs20,r5,r3
448c2ecf20Sopenharmony_ci	addi	r5,r5,16
458c2ecf20Sopenharmony_ci	stxvd2x	vs21,r5,r3
468c2ecf20Sopenharmony_ci	addi	r5,r5,16
478c2ecf20Sopenharmony_ci	stxvd2x	vs22,r5,r3
488c2ecf20Sopenharmony_ci	addi	r5,r5,16
498c2ecf20Sopenharmony_ci	stxvd2x	vs23,r5,r3
508c2ecf20Sopenharmony_ci	addi	r5,r5,16
518c2ecf20Sopenharmony_ci	stxvd2x	vs24,r5,r3
528c2ecf20Sopenharmony_ci	addi	r5,r5,16
538c2ecf20Sopenharmony_ci	stxvd2x	vs25,r5,r3
548c2ecf20Sopenharmony_ci	addi	r5,r5,16
558c2ecf20Sopenharmony_ci	stxvd2x	vs26,r5,r3
568c2ecf20Sopenharmony_ci	addi	r5,r5,16
578c2ecf20Sopenharmony_ci	stxvd2x	vs27,r5,r3
588c2ecf20Sopenharmony_ci	addi	r5,r5,16
598c2ecf20Sopenharmony_ci	stxvd2x	vs28,r5,r3
608c2ecf20Sopenharmony_ci	addi	r5,r5,16
618c2ecf20Sopenharmony_ci	stxvd2x	vs29,r5,r3
628c2ecf20Sopenharmony_ci	addi	r5,r5,16
638c2ecf20Sopenharmony_ci	stxvd2x	vs30,r5,r3
648c2ecf20Sopenharmony_ci	addi	r5,r5,16
658c2ecf20Sopenharmony_ci	stxvd2x	vs31,r5,r3
668c2ecf20Sopenharmony_ci	blr
678c2ecf20Sopenharmony_ciFUNC_END(store_vsx)
68