/*
    NetWinder Floating Point Emulator
    (c) Rebel.com, 1998-1999

    Direct questions, comments to Scott Bambrough <scottb@netwinder.org>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

    27/03/03 Ian Molton Clean up CONFIG_CPU
*/

#ifndef __FPMODULE_H__
#define __FPMODULE_H__

#define REG_ORIG_R0	17
#define REG_CPSR	16
#define REG_PC		15
#define REG_LR		14
#define REG_SP		13
#define REG_IP		12
#define REG_FP		11
#define REG_R10		10
#define REG_R9		9
#define REG_R9		9
#define REG_R8		8
#define REG_R7		7
#define REG_R6		6
#define REG_R5		5
#define REG_R4		4
#define REG_R3		3
#define REG_R2		2
#define REG_R1		1
#define REG_R0		0

#endif
