#ifndef _M88K_ASM_H_
#define _M88K_ASM_H_
#define _C_LABEL(name) name
#define _ASM_LABEL(name) name
#define _ENTRY(name) \
.text; .align 3; .globl name; .type name,@function; name:
#define ENTRY(name) _ENTRY(name)
#define ASENTRY(name) _ENTRY(name)
#define END(name) \
.size name,.-name
#define GLOBAL(name) \
.globl name; name:
#define ASGLOBAL(name) \
.globl name; name:
#define LOCAL(name) \
name:
#define ASLOCAL(name) \
name:
#define BSS(name, size) \
.comm name, size
#define ASBSS(name, size) \
.comm name, size
#define STRONG_ALIAS(alias,sym) \
.global alias; \
alias = sym
#define WEAK_ALIAS(alias,sym) \
.weak alias; \
alias = sym
#ifdef _KERNEL
#ifdef _LOCORE
#define PID %cr0
#define PSR %cr1
#define EPSR %cr2
#define SSBR %cr3
#define SXIP %cr4
#define EXIP %cr4
#define SNIP %cr5
#define ENIP %cr5
#define SFIP %cr6
#define VBR %cr7
#define DMT0 %cr8
#define DMD0 %cr9
#define DMA0 %cr10
#define DMT1 %cr11
#define DMD1 %cr12
#define DMA1 %cr13
#define DMT2 %cr14
#define DMD2 %cr15
#define DMA2 %cr16
#define SRX %cr16
#define SR0 %cr17
#define SR1 %cr18
#define SR2 %cr19
#define SR3 %cr20
#define ICMD %cr25
#define ICTL %cr26
#define ISAR %cr27
#define ISAP %cr28
#define IUAP %cr29
#define IIR %cr30
#define IBP %cr31
#define IPPU %cr32
#define IPPL %cr33
#define ISR %cr34
#define ILAR %cr35
#define IPAR %cr36
#define DCMD %cr40
#define DCTL %cr41
#define DSAR %cr42
#define DSAP %cr43
#define DUAP %cr44
#define DIR %cr45
#define DBP %cr46
#define DPPU %cr47
#define DPPL %cr48
#define DSR %cr49
#define DLAR %cr50
#define DPAR %cr51
#define FPECR %fcr0
#define FPHS1 %fcr1
#define FPLS1 %fcr2
#define FPHS2 %fcr3
#define FPLS2 %fcr4
#define FPPT %fcr5
#define FPRH %fcr6
#define FPRL %fcr7
#define FPIT %fcr8
#define FPSR %fcr62
#define FPCR %fcr63
#define CPU SR0
#define FLUSH_PIPELINE tb1 0, %r0, 0
#define NOP or %r0, %r0, %r0
#define RTE NOP; rte
#define PSR_SHADOW_FREEZE_BIT 0
#define PSR_INTERRUPT_DISABLE_BIT 1
#define PSR_FPU_DISABLE_BIT 3
#define PSR_GRAPHICS_DISABLE_BIT 4
#define PSR_SERIALIZE_BIT 25
#define PSR_CARRY_BIT 28
#define PSR_SERIAL_MODE_BIT 29
#define PSR_BIG_ENDIAN_MODE 30
#define PSR_SUPERVISOR_MODE_BIT 31
#define DMT_VALID_BIT 0
#define DMT_WRITE_BIT 1
#define DMT_LOCK_BIT 12
#define DMT_DOUBLE_BIT 13
#define DMT_DAS_BIT 14
#define DMT_DREG_OFFSET 7
#define DMT_DREG_WIDTH 5
#define RTE_VALID_BIT 1
#define RTE_ERROR_BIT 0
#define VECTOR(x) \
.word x
#endif
#endif
#endif