Integrating z80
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@463 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
1afeed4d05
commit
9a7e634a96
@ -51,7 +51,7 @@
|
||||
|
||||
/* Z80 Interrupts */
|
||||
|
||||
#define Z80_IRQ_SYSTIMER (1)
|
||||
#define Z80_IRQ_SYSTIMER (0)
|
||||
#define NR_IRQS (1)
|
||||
|
||||
/* IRQ Stack Frame Format
|
||||
|
@ -111,15 +111,22 @@ forever:
|
||||
push af ; Offset 0: I with interrupt state in carry
|
||||
di
|
||||
|
||||
; Call the interrupt decode logic. SP points to the beggining of the reg structure
|
||||
; Call the interrupt decode logic. SP points to the beggining of the reg structure
|
||||
|
||||
ld hl, #0 ; Argument is the beginning of the reg structure
|
||||
add hl, sp ;
|
||||
push hl ;
|
||||
push hl ; Place argument at the top of thest
|
||||
call _up_decodeirq ; Decode the IRQ
|
||||
|
||||
; On return, HL points to the beginning of the reg structure to restore
|
||||
; Note that (1) the argument pushed on the stack is not popped, and (2) the
|
||||
; original stack pointer is lost. In the normal case (no context switch),
|
||||
; HL will contain the value of the SP before the argument was pushed.
|
||||
|
||||
ld sp, hl ; Use the new stack pointer
|
||||
|
||||
; Restore registers. HL points to the beginning of the reg structure to restore
|
||||
|
||||
ld sp, hl ; Use the temp stack pointer
|
||||
ex af, af' ; Select alternate AF
|
||||
pop af ; Offset 0: AF' = I with interrupt state in carry
|
||||
pop bc ; Offset 1: BC
|
||||
|
@ -92,13 +92,14 @@ irqstate_t irqsave(void) __naked
|
||||
void irqrestore(irqstate_t flags) __naked
|
||||
{
|
||||
_asm
|
||||
di ; Assume disabled
|
||||
pop hl ; HL = return address
|
||||
pop af ; AF Carry bit hold interrupt state
|
||||
jr nc, statedisable
|
||||
ei
|
||||
ret
|
||||
statedisable:
|
||||
di
|
||||
ret
|
||||
push af ; Restore stack
|
||||
push hl ;
|
||||
ret ; and return
|
||||
_endasm;
|
||||
}
|
||||
|
@ -45,6 +45,15 @@
|
||||
* Definitions
|
||||
************************************************************************************/
|
||||
|
||||
/* Bits in the Z80 FLAGS register */
|
||||
|
||||
#define Z80_C_FLAG 0x01 /* Bit 0: Carry flag */
|
||||
#define Z80_N_FLAG 0x02 /* Bit 1: Add/Subtract flag */
|
||||
#define Z80_PV_FLAG 0x04 /* Bit 2: Parity/Overflow flag */
|
||||
#define Z80_H_FLAG 0x10 /* Bit 4: Half carry flag */
|
||||
#define Z80_Z_FLAG 0x40 /* Bit 5: Zero flag */
|
||||
#define Z80_S_FLAG 0x80 /* Bit 7: Sign flag */
|
||||
|
||||
/************************************************************************************
|
||||
* Public Function Prototypes
|
||||
************************************************************************************/
|
||||
|
Loading…
Reference in New Issue
Block a user