17117f1b4Smrg
27117f1b4Smrg/*
37117f1b4Smrg * Mesa 3-D graphics library
47117f1b4Smrg *
57117f1b4Smrg * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
67117f1b4Smrg *
77117f1b4Smrg * Permission is hereby granted, free of charge, to any person obtaining a
87117f1b4Smrg * copy of this software and associated documentation files (the "Software"),
97117f1b4Smrg * to deal in the Software without restriction, including without limitation
107117f1b4Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
117117f1b4Smrg * and/or sell copies of the Software, and to permit persons to whom the
127117f1b4Smrg * Software is furnished to do so, subject to the following conditions:
137117f1b4Smrg *
147117f1b4Smrg * The above copyright notice and this permission notice shall be included
157117f1b4Smrg * in all copies or substantial portions of the Software.
167117f1b4Smrg *
177117f1b4Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
187117f1b4Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
197117f1b4Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
20af69d88dSmrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
21af69d88dSmrg * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
22af69d88dSmrg * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23af69d88dSmrg * OTHER DEALINGS IN THE SOFTWARE.
247117f1b4Smrg */
257117f1b4Smrg
267117f1b4Smrg/*
277117f1b4Smrg * Normal transform function interface for assembly code.  Simply define
287117f1b4Smrg * FRAME_OFFSET to the number of bytes pushed onto the stack before
297117f1b4Smrg * using the ARG_* argument macros.
307117f1b4Smrg *
317117f1b4Smrg * Gareth Hughes
327117f1b4Smrg */
337117f1b4Smrg
347117f1b4Smrg#ifndef __NORM_ARGS_H__
357117f1b4Smrg#define __NORM_ARGS_H__
367117f1b4Smrg
377117f1b4Smrg/* Offsets for normal_func arguments
387117f1b4Smrg *
39af69d88dSmrg * typedef void (*normal_func)( const GLmatrix *mat,
407117f1b4Smrg *                              GLfloat scale,
41af69d88dSmrg *                              const GLvector4f *in,
42af69d88dSmrg *                              const GLfloat lengths[],
437117f1b4Smrg *                              GLvector4f *dest );
447117f1b4Smrg */
457117f1b4Smrg#define OFFSET_MAT	4
467117f1b4Smrg#define OFFSET_SCALE	8
477117f1b4Smrg#define OFFSET_IN	12
487117f1b4Smrg#define OFFSET_LENGTHS	16
497117f1b4Smrg#define OFFSET_DEST	20
507117f1b4Smrg
517117f1b4Smrg#define ARG_MAT         REGOFF(FRAME_OFFSET+OFFSET_MAT, ESP)
527117f1b4Smrg#define ARG_SCALE       REGOFF(FRAME_OFFSET+OFFSET_SCALE, ESP)
537117f1b4Smrg#define ARG_IN          REGOFF(FRAME_OFFSET+OFFSET_IN, ESP)
547117f1b4Smrg#define ARG_LENGTHS     REGOFF(FRAME_OFFSET+OFFSET_LENGTHS, ESP)
557117f1b4Smrg#define ARG_DEST        REGOFF(FRAME_OFFSET+OFFSET_DEST, ESP)
567117f1b4Smrg
577117f1b4Smrg#endif
58