Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
PUAE
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PocketInsanity
PUAE
Commits
ea310c1e
Commit
ea310c1e
authored
Jan 11, 2011
by
GnoStiC
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
puae 2.3.1
parent
6ef16d06
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
114 additions
and
63 deletions
+114
-63
configure.in
configure.in
+3
-3
m68k.h
src/md-generic/m68k.h
+50
-24
m68k.h
src/md-ppc/m68k.h
+61
-36
No files found.
configure.in
View file @
ea310c1e
...
@@ -371,7 +371,7 @@ HOST_CPU=generic
...
@@ -371,7 +371,7 @@ HOST_CPU=generic
MDFPP_H=fpp-unknown.h
MDFPP_H=fpp-unknown.h
case $host_cpu in
case $host_cpu in
i[[3-
6
]]86)
i[[3-
7
]]86)
HOST_CPU=i386
HOST_CPU=i386
MDFPP_H=fpp-ieee.h
MDFPP_H=fpp-ieee.h
;;
;;
...
@@ -379,11 +379,11 @@ case $host_cpu in
...
@@ -379,11 +379,11 @@ case $host_cpu in
HOST_CPU=amd64
HOST_CPU=amd64
MDFPP_H=fpp-ieee.h
MDFPP_H=fpp-ieee.h
;;
;;
powerpc)
powerpc
*
)
HOST_CPU=ppc
HOST_CPU=ppc
MDFPP_H=fpp-ieee.h
MDFPP_H=fpp-ieee.h
;;
;;
m68k)
m68k
| m680[246]0
)
HOST_CPU=68k
HOST_CPU=68k
MDFPP_H=fpp-ieee.h
MDFPP_H=fpp-ieee.h
;;
;;
...
...
src/md-generic/m68k.h
View file @
ea310c1e
...
@@ -11,40 +11,66 @@
...
@@ -11,40 +11,66 @@
* Machine-dependent structure for holding the 68k CCR flags
* Machine-dependent structure for holding the 68k CCR flags
*/
*/
struct
flag_struct
{
struct
flag_struct
{
unsigned
int
c
;
unsigned
int
cznv
;
unsigned
int
z
;
unsigned
int
n
;
unsigned
int
v
;
unsigned
int
x
;
unsigned
int
x
;
};
};
extern
struct
flag_struct
regflags
;
extern
struct
flag_struct
regflags
;
#define
ZFLG (regflags.z)
#define
FLAGBIT_N 15
#define
NFLG (regflags.n)
#define
FLAGBIT_Z 14
#define
CFLG (regflags.c)
#define
FLAGBIT_C 8
#define
VFLG (regflags.v)
#define
FLAGBIT_V 0
#define
XFLG (regflags.x)
#define
FLAGBIT_X 8
STATIC_INLINE
int
cctrue
(
int
cc
)
#define FLAGVAL_N (1 << FLAGBIT_N)
#define FLAGVAL_Z (1 << FLAGBIT_Z)
#define FLAGVAL_C (1 << FLAGBIT_C)
#define FLAGVAL_V (1 << FLAGBIT_V)
#define FLAGVAL_X (1 << FLAGBIT_X)
#define SET_ZFLG(y) (regflags.cznv = (regflags.cznv & ~FLAGVAL_Z) | (((y) ? 1 : 0) << FLAGBIT_Z))
#define SET_CFLG(y) (regflags.cznv = (regflags.cznv & ~FLAGVAL_C) | (((y) ? 1 : 0) << FLAGBIT_C))
#define SET_VFLG(y) (regflags.cznv = (regflags.cznv & ~FLAGVAL_V) | (((y) ? 1 : 0) << FLAGBIT_V))
#define SET_NFLG(y) (regflags.cznv = (regflags.cznv & ~FLAGVAL_N) | (((y) ? 1 : 0) << FLAGBIT_N))
#define SET_XFLG(y) (regflags.x = ((y) ? 1 : 0) << FLAGBIT_X)
#define GET_ZFLG() ((regflags.cznv >> FLAGBIT_Z) & 1)
#define GET_CFLG() ((regflags.cznv >> FLAGBIT_C) & 1)
#define GET_VFLG() ((regflags.cznv >> FLAGBIT_V) & 1)
#define GET_NFLG() ((regflags.cznv >> FLAGBIT_N) & 1)
#define GET_XFLG() ((regflags.x >> FLAGBIT_X) & 1)
#define CLEAR_CZNV() (regflags.cznv = 0)
#define GET_CZNV (regflags.cznv)
#define IOR_CZNV(X) (regflags.cznv |= (X))
#define SET_CZNV(X) (regflags.cznv = (X))
#define COPY_CARRY() (regflags.x = regflags.cznv)
STATIC_INLINE
int
cctrue
(
int
cc
)
{
{
uae_u32
cznv
=
regflags
.
cznv
;
switch
(
cc
)
{
switch
(
cc
)
{
case
0
:
return
1
;
/* T */
case
0
:
return
1
;
/* T */
case
1
:
return
0
;
/* F */
case
1
:
return
0
;
/* F */
case
2
:
return
!
CFLG
&&
!
ZFLG
;
/* HI */
case
2
:
return
(
cznv
&
(
FLAGVAL_C
|
FLAGVAL_Z
))
==
0
;
/* !CFLG && !ZFLG HI */
case
3
:
return
CFLG
||
ZFLG
;
/* LS */
case
3
:
return
(
cznv
&
(
FLAGVAL_C
|
FLAGVAL_Z
))
!=
0
;
/* CFLG || ZFLG LS */
case
4
:
return
!
CFLG
;
/* CC */
case
4
:
return
(
cznv
&
FLAGVAL_C
)
==
0
;
/* !CFLG CC */
case
5
:
return
CFLG
;
/* CS */
case
5
:
return
(
cznv
&
FLAGVAL_C
)
!=
0
;
/* CFLG CS */
case
6
:
return
!
ZFLG
;
/* NE */
case
6
:
return
(
cznv
&
FLAGVAL_Z
)
==
0
;
/* !ZFLG NE */
case
7
:
return
ZFLG
;
/* EQ */
case
7
:
return
(
cznv
&
FLAGVAL_Z
)
!=
0
;
/* ZFLG EQ */
case
8
:
return
!
VFLG
;
/* VC */
case
8
:
return
(
cznv
&
FLAGVAL_V
)
==
0
;
/* !VFLG VC */
case
9
:
return
VFLG
;
/* VS */
case
9
:
return
(
cznv
&
FLAGVAL_V
)
!=
0
;
/* VFLG VS */
case
10
:
return
!
NFLG
;
/* PL */
case
10
:
return
(
cznv
&
FLAGVAL_N
)
==
0
;
/* !NFLG PL */
case
11
:
return
NFLG
;
/* MI */
case
11
:
return
(
cznv
&
FLAGVAL_N
)
!=
0
;
/* NFLG MI */
case
12
:
return
NFLG
==
VFLG
;
/* GE */
case
12
:
return
(((
cznv
<<
(
FLAGBIT_N
-
FLAGBIT_V
))
^
cznv
)
&
FLAGVAL_N
)
==
0
;
/* NFLG == VFLG GE */
case
13
:
return
NFLG
!=
VFLG
;
/* LT */
case
13
:
return
(((
cznv
<<
(
FLAGBIT_N
-
FLAGBIT_V
))
^
cznv
)
&
FLAGVAL_N
)
!=
0
;
/* NFLG != VFLG LT */
case
14
:
return
!
ZFLG
&&
(
NFLG
==
VFLG
);
/* GT */
case
14
:
cznv
&=
(
FLAGVAL_N
|
FLAGVAL_Z
|
FLAGVAL_V
);
/* ZFLG && (NFLG == VFLG) GT */
case
15
:
return
ZFLG
||
(
NFLG
!=
VFLG
);
/* LE */
return
(((
cznv
<<
(
FLAGBIT_N
-
FLAGBIT_V
))
^
cznv
)
&
(
FLAGVAL_N
|
FLAGVAL_Z
))
==
0
;
case
15
:
cznv
&=
(
FLAGVAL_N
|
FLAGVAL_Z
|
FLAGVAL_V
);
/* ZFLG && (NFLG != VFLG) LE */
return
(((
cznv
<<
(
FLAGBIT_N
-
FLAGBIT_V
))
^
cznv
)
&
(
FLAGVAL_N
|
FLAGVAL_Z
))
!=
0
;
}
}
abort
();
abort
();
return
0
;
return
0
;
...
...
src/md-ppc/m68k.h
View file @
ea310c1e
/*
/*
* UAE - The Un*x Amiga Emulator
* UAE - The Un*x Amiga Emulator
*
*
* MC68000 emulation - machine dependent bits
* MC68000 emulation - machine dependent bits
...
@@ -6,44 +6,69 @@
...
@@ -6,44 +6,69 @@
* Copyright 1996 Bernd Schmidt
* Copyright 1996 Bernd Schmidt
*/
*/
struct
flag_struct
{
struct
flag_struct
{
unsigned
int
c
;
unsigned
int
cznv
;
unsigned
int
z
;
unsigned
int
n
;
unsigned
int
v
;
unsigned
int
x
;
unsigned
int
x
;
};
};
extern
struct
flag_struct
regflags
;
extern
struct
flag_struct
regflags
;
#define ZFLG (regflags.z)
#define FLAGBIT_N 15
#define NFLG (regflags.n)
#define FLAGBIT_Z 14
#define CFLG (regflags.c)
#define FLAGBIT_C 8
#define VFLG (regflags.v)
#define FLAGBIT_V 0
#define XFLG (regflags.x)
#define FLAGBIT_X 8
#define FLAGVAL_N (1 << FLAGBIT_N)
#define FLAGVAL_Z (1 << FLAGBIT_Z)
#define FLAGVAL_C (1 << FLAGBIT_C)
#define FLAGVAL_V (1 << FLAGBIT_V)
#define FLAGVAL_X (1 << FLAGBIT_X)
#define SET_ZFLG(y) (regflags.cznv = (regflags.cznv & ~FLAGVAL_Z) | (((y) ? 1 : 0) << FLAGBIT_Z))
#define SET_CFLG(y) (regflags.cznv = (regflags.cznv & ~FLAGVAL_C) | (((y) ? 1 : 0) << FLAGBIT_C))
#define SET_VFLG(y) (regflags.cznv = (regflags.cznv & ~FLAGVAL_V) | (((y) ? 1 : 0) << FLAGBIT_V))
#define SET_NFLG(y) (regflags.cznv = (regflags.cznv & ~FLAGVAL_N) | (((y) ? 1 : 0) << FLAGBIT_N))
#define SET_XFLG(y) (regflags.x = ((y) ? 1 : 0) << FLAGBIT_X)
#define GET_ZFLG() ((regflags.cznv >> FLAGBIT_Z) & 1)
#define GET_CFLG() ((regflags.cznv >> FLAGBIT_C) & 1)
#define GET_VFLG() ((regflags.cznv >> FLAGBIT_V) & 1)
#define GET_NFLG() ((regflags.cznv >> FLAGBIT_N) & 1)
#define GET_XFLG() ((regflags.x >> FLAGBIT_X) & 1)
static
__inline__
int
cctrue
(
const
int
cc
)
#define CLEAR_CZNV() (regflags.cznv = 0)
#define GET_CZNV (regflags.cznv)
#define IOR_CZNV(X) (regflags.cznv |= (X))
#define SET_CZNV(X) (regflags.cznv = (X))
#define COPY_CARRY() (regflags.x = regflags.cznv)
static
__inline__
int
cctrue
(
int
cc
)
{
{
switch
(
cc
){
uae_u32
cznv
=
regflags
.
cznv
;
switch
(
cc
)
{
case
0
:
return
1
;
/* T */
case
0
:
return
1
;
/* T */
case
1
:
return
0
;
/* F */
case
1
:
return
0
;
/* F */
case
2
:
return
!
CFLG
&&
!
ZFLG
;
/* HI */
case
2
:
return
(
cznv
&
(
FLAGVAL_C
|
FLAGVAL_Z
))
==
0
;
/* !CFLG && !ZFLG HI */
case
3
:
return
CFLG
||
ZFLG
;
/* LS */
case
3
:
return
(
cznv
&
(
FLAGVAL_C
|
FLAGVAL_Z
))
!=
0
;
/* CFLG || ZFLG LS */
case
4
:
return
!
CFLG
;
/* CC */
case
4
:
return
(
cznv
&
FLAGVAL_C
)
==
0
;
/* !CFLG CC */
case
5
:
return
CFLG
;
/* CS */
case
5
:
return
(
cznv
&
FLAGVAL_C
)
!=
0
;
/* CFLG CS */
case
6
:
return
!
ZFLG
;
/* NE */
case
6
:
return
(
cznv
&
FLAGVAL_Z
)
==
0
;
/* !ZFLG NE */
case
7
:
return
ZFLG
;
/* EQ */
case
7
:
return
(
cznv
&
FLAGVAL_Z
)
!=
0
;
/* ZFLG EQ */
case
8
:
return
!
VFLG
;
/* VC */
case
8
:
return
(
cznv
&
FLAGVAL_V
)
==
0
;
/* !VFLG VC */
case
9
:
return
VFLG
;
/* VS */
case
9
:
return
(
cznv
&
FLAGVAL_V
)
!=
0
;
/* VFLG VS */
case
10
:
return
!
NFLG
;
/* PL */
case
10
:
return
(
cznv
&
FLAGVAL_N
)
==
0
;
/* !NFLG PL */
case
11
:
return
NFLG
;
/* MI */
case
11
:
return
(
cznv
&
FLAGVAL_N
)
!=
0
;
/* NFLG MI */
case
12
:
return
NFLG
==
VFLG
;
/* GE */
case
12
:
return
(((
cznv
<<
(
FLAGBIT_N
-
FLAGBIT_V
))
^
cznv
)
&
FLAGVAL_N
)
==
0
;
/* NFLG == VFLG GE */
case
13
:
return
NFLG
!=
VFLG
;
/* LT */
case
13
:
return
(((
cznv
<<
(
FLAGBIT_N
-
FLAGBIT_V
))
^
cznv
)
&
FLAGVAL_N
)
!=
0
;
/* NFLG != VFLG LT */
case
14
:
return
!
ZFLG
&&
(
NFLG
==
VFLG
);
/* GT */
case
14
:
cznv
&=
(
FLAGVAL_N
|
FLAGVAL_Z
|
FLAGVAL_V
);
/* ZFLG && (NFLG == VFLG) GT */
case
15
:
return
ZFLG
||
(
NFLG
!=
VFLG
);
/* LE */
return
(((
cznv
<<
(
FLAGBIT_N
-
FLAGBIT_V
))
^
cznv
)
&
(
FLAGVAL_N
|
FLAGVAL_Z
))
==
0
;
case
15
:
cznv
&=
(
FLAGVAL_N
|
FLAGVAL_Z
|
FLAGVAL_V
);
/* ZFLG && (NFLG != VFLG) LE */
return
(((
cznv
<<
(
FLAGBIT_N
-
FLAGBIT_V
))
^
cznv
)
&
(
FLAGVAL_N
|
FLAGVAL_Z
))
!=
0
;
}
}
abort
();
abort
();
return
0
;
return
0
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment