root/src/system/libroot/os/arch/sparc/fpu_reg.S
/*-
 * Copyright (c) 2002 by Thomas Moestl <tmm@FreeBSD.org>.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */


/*
 * Define arrays of leaf functions to load/store fp registers to memory. See
 * fpu_reg.h for the definitions to use this from C code. The function sizes
 * defines there must be kept in sync with this file!
 */

.macro ld32     reg
        retl
         ld     [%o0], %f\reg
.endm

.macro st32     reg
        retl
         st     %f\reg, [%o0]
.endm

.macro ld64     reg
        retl
         ldd    [%o0], %f\reg
.endm

.macro st64     reg
        retl
         std    %f\reg, [%o0]
.endm

/* The actual function arrays. */
        .globl  __fpu_ld32
__fpu_ld32:
        ld32    0
        ld32    1
        ld32    2
        ld32    3
        ld32    4
        ld32    5
        ld32    6
        ld32    7
        ld32    8
        ld32    9
        ld32    10
        ld32    11
        ld32    12
        ld32    13
        ld32    14
        ld32    15
        ld32    16
        ld32    17
        ld32    18
        ld32    19
        ld32    20
        ld32    21
        ld32    22
        ld32    23
        ld32    24
        ld32    25
        ld32    26
        ld32    27
        ld32    28
        ld32    29
        ld32    30
        ld32    31

        .globl  __fpu_st32
__fpu_st32:
        st32    0
        st32    1
        st32    2
        st32    3
        st32    4
        st32    5
        st32    6
        st32    7
        st32    8
        st32    9
        st32    10
        st32    11
        st32    12
        st32    13
        st32    14
        st32    15
        st32    16
        st32    17
        st32    18
        st32    19
        st32    20
        st32    21
        st32    22
        st32    23
        st32    24
        st32    25
        st32    26
        st32    27
        st32    28
        st32    29
        st32    30
        st32    31

        .globl  __fpu_ld64
__fpu_ld64:
        ld64    0
        ld64    2
        ld64    4
        ld64    6
        ld64    8
        ld64    10
        ld64    12
        ld64    14
        ld64    16
        ld64    18
        ld64    20
        ld64    22
        ld64    24
        ld64    26
        ld64    28
        ld64    30
        ld64    32
        ld64    34
        ld64    36
        ld64    38
        ld64    40
        ld64    42
        ld64    44
        ld64    46
        ld64    48
        ld64    50
        ld64    52
        ld64    54
        ld64    56
        ld64    58
        ld64    60
        ld64    62

        .globl  __fpu_st64
__fpu_st64:
        st64    0
        st64    2
        st64    4
        st64    6
        st64    8
        st64    10
        st64    12
        st64    14
        st64    16
        st64    18
        st64    20
        st64    22
        st64    24
        st64    26
        st64    28
        st64    30
        st64    32
        st64    34
        st64    36
        st64    38
        st64    40
        st64    42
        st64    44
        st64    46
        st64    48
        st64    50
        st64    52
        st64    54
        st64    56
        st64    58
        st64    60
        st64    62