mirror of
https://github.com/apache/nuttx.git
synced 2026-05-30 21:36:28 +08:00
ez80Acclaim fixes from Kevin Franzen
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1500 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
@@ -614,6 +614,13 @@
|
|||||||
0.4.2 2009-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
|
0.4.2 2009-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||||
|
|
||||||
* Add support for the Renesas M16C MCU and the SKP16C26 StarterKit.
|
* Add support for the Renesas M16C MCU and the SKP16C26 StarterKit.
|
||||||
|
* Kevin Franzen has integrated and verified the ez80Acclaim! port and he has
|
||||||
|
graciously provided the following critical changes:
|
||||||
|
- Fix interrupt vectors positioning; they were being positioned wrong by
|
||||||
|
64 bytes.
|
||||||
|
- Corrected some stack handling errors during interrupt handling contextg
|
||||||
|
save and restore.
|
||||||
|
- Corrected vector intialization logic
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<tr align="center" bgcolor="#e4e4e4">
|
<tr align="center" bgcolor="#e4e4e4">
|
||||||
<td>
|
<td>
|
||||||
<h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1>
|
<h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1>
|
||||||
<p>Last Updated: February 13, 2009</p>
|
<p>Last Updated: February 14, 2009</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@@ -898,7 +898,13 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<b>STATUS:</b>
|
<b>STATUS:</b>
|
||||||
This is a work in progress. Verified ez80 support will be announced in a future NuttX release.
|
Kevin Franzen has integrated and verified the ez80Acclaim! port and he has
|
||||||
|
graciously provided the changes that he made. So I do not have first hand
|
||||||
|
experience, but the ez80Acclaim! port should be functional.
|
||||||
|
Kevin's changes were released in NuttX version 0.4.2.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The EMAC driver has not yet been verified.
|
||||||
</p>
|
</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -1289,6 +1295,13 @@ buildroot-0.1.2 2007-11-06 <spudmonkey@racsa.co.cr>
|
|||||||
nuttx-0.4.2 2009-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
|
nuttx-0.4.2 2009-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||||
|
|
||||||
* Add support for the Renesas M16C MCU and the SKP16C26 StarterKit.
|
* Add support for the Renesas M16C MCU and the SKP16C26 StarterKit.
|
||||||
|
* Kevin Franzen has integrated and verified the ez80Acclaim! port and he has
|
||||||
|
graciously provided the following critical changes:
|
||||||
|
- Fix interrupt vectors positioning; they were being positioned wrong by
|
||||||
|
64 bytes.
|
||||||
|
- Corrected some stack handling errors during interrupt handling contextg
|
||||||
|
save and restore.
|
||||||
|
- Corrected vector intialization logic
|
||||||
|
|
||||||
pascal-0.1.3 2009-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
|
pascal-0.1.3 2009-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||||
|
|
||||||
|
|||||||
@@ -210,7 +210,7 @@ _ez80_rstcommon:
|
|||||||
push de ; Offset 2: DE
|
push de ; Offset 2: DE
|
||||||
push bc ; Offset 1: BC
|
push bc ; Offset 1: BC
|
||||||
|
|
||||||
ld b, a ; Save the reset number in B
|
ld c, a ; Save the reset number in C
|
||||||
ld a, i ; Carry bit holds interrupt state
|
ld a, i ; Carry bit holds interrupt state
|
||||||
push af ; Offset 0: I with interrupt state in carry
|
push af ; Offset 0: I with interrupt state in carry
|
||||||
di
|
di
|
||||||
@@ -221,7 +221,6 @@ _ez80_rstcommon:
|
|||||||
add hl, sp ;
|
add hl, sp ;
|
||||||
push hl ; Place argument #2 at the top of stack
|
push hl ; Place argument #2 at the top of stack
|
||||||
push bc ; Argument #1 is the Reset number
|
push bc ; Argument #1 is the Reset number
|
||||||
inc sp ; (make byte sized)
|
|
||||||
call _up_doirq ; Decode the IRQ
|
call _up_doirq ; Decode the IRQ
|
||||||
|
|
||||||
; On return, HL points to the beginning of the reg structure to restore
|
; On return, HL points to the beginning of the reg structure to restore
|
||||||
@@ -241,9 +240,7 @@ _ez80_rstcommon:
|
|||||||
pop ix ; Offset 3: IX
|
pop ix ; Offset 3: IX
|
||||||
pop iy ; Offset 4: IY
|
pop iy ; Offset 4: IY
|
||||||
exx ; Use alternate BC/DE/HL
|
exx ; Use alternate BC/DE/HL
|
||||||
ld hl, #-2 ; Offset of SP to account for ret addr on stack
|
pop hl ; Offset 5: HL' = Stack pointer after return
|
||||||
pop de ; Offset 5: HL' = Stack pointer after return
|
|
||||||
add hl, de ; HL = Stack pointer value before return
|
|
||||||
exx ; Restore original BC/DE/HL
|
exx ; Restore original BC/DE/HL
|
||||||
pop hl ; Offset 6: HL
|
pop hl ; Offset 6: HL
|
||||||
pop af ; Offset 7: AF
|
pop af ; Offset 7: AF
|
||||||
@@ -273,21 +270,31 @@ _ez80_initvectors:
|
|||||||
; Initialize the vector table
|
; Initialize the vector table
|
||||||
|
|
||||||
ld iy, _ez80_vectable
|
ld iy, _ez80_vectable
|
||||||
|
ld ix, 4
|
||||||
ld bc, 4
|
ld bc, 4
|
||||||
ld b, NVECTORS
|
ld b, NVECTORS
|
||||||
ld hl, _ez80_handlers
|
xor a, a ; Clear carry
|
||||||
ld de, handlersize
|
ld hl, handlersize
|
||||||
|
ld de, _ez80_handlers
|
||||||
|
sbc hl, de ; Length of irq handler in hl
|
||||||
|
ld d, h
|
||||||
|
ld e, l
|
||||||
|
ld hl, _ez80_handlers ; Start of handlers in hl
|
||||||
|
|
||||||
ld a, 0
|
ld a, 0
|
||||||
$1:
|
$1:
|
||||||
ld (iy), hl ; Store IRQ handler
|
ld (iy), hl ; Store IRQ handler
|
||||||
ld (iy+3), a ; Pad to 4 bytes
|
ld (iy+3), a ; Pad to 4 bytes
|
||||||
add hl, de ; Point to next handler
|
add hl, de ; Point to next handler
|
||||||
add iy, bc ; Point to next entry in vector table
|
push de
|
||||||
djnz $1 ; Loop until all vectors have been written
|
ld de, 4
|
||||||
|
add iy, de ; Point to next entry in vector table
|
||||||
|
pop de
|
||||||
|
djnz $1 ; Loop until all vectors have been written
|
||||||
|
|
||||||
; Select interrupt mode 2
|
; Select interrupt mode 2
|
||||||
|
|
||||||
im 2 ; Interrupt mode 2
|
im 2 ; Interrupt mode 2
|
||||||
|
|
||||||
; Write the address of the vector table into the interrupt vector base
|
; Write the address of the vector table into the interrupt vector base
|
||||||
|
|
||||||
@@ -304,5 +311,8 @@ $1:
|
|||||||
define .IVECTS, space = RAM, align = 200h
|
define .IVECTS, space = RAM, align = 200h
|
||||||
segment .IVECTS
|
segment .IVECTS
|
||||||
|
|
||||||
|
; The first 64 bytes are not used... the vectors actually start at +0x40
|
||||||
|
_ez80_vecreserve:
|
||||||
|
ds 64
|
||||||
_ez80_vectable:
|
_ez80_vectable:
|
||||||
ds NVECTORS * 4
|
ds NVECTORS * 4
|
||||||
|
|||||||
Reference in New Issue
Block a user