; This is designed to be serial-line downloaded to cdcode. ; ; Our memory map: ; ; [8c000000,8c010000) Stack (r15 set by cdcode) ; [8c010000,8c01????) cdcode ; [8c020000,8c030000) our data segment ; [8c030000,8c03????) our text segment .include "regs.s" BUS_RESET = 0xa05f6c8c BUS_RESET_VALUE = 0x6155404f BUS_RESET2 = 0xa05f6c10 BUS_RESET2_VALUE = 0 BUS_DMAADDR = 0xa05f6c04 BUS_ENABLE = 0xa05f6c14 BUS_ENABLE_VALUE = 1 BUS_STATE = 0xa05f6c18 BUS_SPEED = 0xa05f6c80 DMA_ADDRMASK = 0x1fffffe0 SPEED_TIMEOUT_SHIFT = 16 SPEED_2MBPS = 0 CMD_REQDEVINFO = 1 CMD_REQEXTINFO = 2 CMD_RESET = 3 CMD_SHUTDOWN = 4 RESP_DEVINFO = 5 RESP_EXTINFO = 6 RESP_ACK = 7 RESP_DATA = 8 CMD_GETCOND = 9 CMD_GETMEMINFO = 10 CMD_BLOCKREAD = 11 CMD_BLOCKWRITE = 12 CMD_SETCOND = 14 ERR_NORESP = [256-1] ERR_FUNCUNSUPP = [256-2] ERR_UNKCMD = [256-3] ERR_SENDAGAIN = [256-4] ERR_FILEERR = [256-5] XDESC_LAST = 0x80000000 XDESC_PORTSHIFT = 16 XDESC_GUN = 0x00000200 XDESC_LENSHIFT = 0 . = 0x8c020000 . = 0x8c030000 ; The only things startup.s sets up that cdcode hasn't already done for ; us are (1) fpscr and (2) clearing bss. We don't have bss because we ; aren't linked by a conventional linker, and we don't use floating ; point so we don't care about fpscr. ; Nothing to do here. bsr putchar2 mov #'a,r1 bsr init_hw nop bsr putchar2 mov #'b,r1 lds r11,pr rts nop init_hw: mova 9f,r0 1: mov.l @r0+,r1 tst r1,r1 bt 1f mov.l @r0+,r2 bra 1b mov.l r2,@r1 1: rts nop .align 4 9: .long BUS_RESET, BUS_RESET_VALUE .long BUS_RESET2, BUS_RESET2_VALUE .long BUS_SPEED, SPEED_2MBPS|[50000<