1/* $NetBSD: bugstart.S,v 1.1 2014/11/21 20:10:28 christos Exp $ */ 2 3#define _LOCORE 4#include <machine/prom.h> 5#undef _LOCORE 6#include <machine/asm.h> 7 8 .data 9 .even 10 11GLOBAL(bugargs) 12 .space MVMEPROM_ARGS_MAX*4 13 14 .text 15 .even 16 17 .long _C_LABEL(start) - 0x10 18 .long _C_LABEL(start) 19 20#define BUG_ARG(which) _C_LABEL(bugargs) + (which) 21 22ENTRY_NOPROFILE(_start) 23ENTRY_NOPROFILE(start) 24 moveml %d0/%a0,%sp@- 25 lea _C_LABEL(edata),%a0 26 movl #_C_LABEL(end) - 4,%d0 27 subl %a0,%d0 28 lsrl #2,%d0 291: clrl %a0@+ 30 dbra %d0,1b 31 moveml %sp@+,%d0/%a0 32 movl MVMEPROM_REG_DEVLUN, BUG_ARG(MVMEPROM_ARGS_DEVLUN) 33 movl MVMEPROM_REG_CTRLLUN, BUG_ARG(MVMEPROM_ARGS_CTRLLUN) 34 movl MVMEPROM_REG_FLAGS, BUG_ARG(MVMEPROM_ARGS_FLAGS) 35 movl MVMEPROM_REG_CTRLADDR, BUG_ARG(MVMEPROM_ARGS_CTRLADDR) 36 movl MVMEPROM_REG_ENTRY, BUG_ARG(MVMEPROM_ARGS_ENTRY) 37 movl MVMEPROM_REG_CONFBLK, BUG_ARG(MVMEPROM_ARGS_CONFBLK) 38 movl MVMEPROM_REG_NBARGSTART, BUG_ARG(MVMEPROM_ARGS_NBARGSTART) 39 movl MVMEPROM_REG_NBARGEND, BUG_ARG(MVMEPROM_ARGS_NBARGEND) 40 movl MVMEPROM_REG_ARGSTART, BUG_ARG(MVMEPROM_ARGS_ARGSTART) 41 movl MVMEPROM_REG_ARGEND, BUG_ARG(MVMEPROM_ARGS_ARGEND) 42 jmp _C_LABEL(_bugstart) 43 44ENTRY_NOPROFILE(bugexec) 45 addql #4,%sp 46 movl BUG_ARG(MVMEPROM_ARGS_DEVLUN), MVMEPROM_REG_DEVLUN 47 movl BUG_ARG(MVMEPROM_ARGS_CTRLLUN), MVMEPROM_REG_CTRLLUN 48 movl BUG_ARG(MVMEPROM_ARGS_FLAGS), MVMEPROM_REG_FLAGS 49 movl BUG_ARG(MVMEPROM_ARGS_CTRLADDR), MVMEPROM_REG_CTRLADDR 50 movl BUG_ARG(MVMEPROM_ARGS_ENTRY), MVMEPROM_REG_ENTRY 51 movl BUG_ARG(MVMEPROM_ARGS_CONFBLK), MVMEPROM_REG_CONFBLK 52 movl BUG_ARG(MVMEPROM_ARGS_NBARGSTART), MVMEPROM_REG_NBARGSTART 53 movl BUG_ARG(MVMEPROM_ARGS_NBARGEND), MVMEPROM_REG_NBARGEND 54 movl BUG_ARG(MVMEPROM_ARGS_ARGSTART), MVMEPROM_REG_ARGSTART 55 movl BUG_ARG(MVMEPROM_ARGS_ARGEND), MVMEPROM_REG_ARGEND 56ENTRY_NOPROFILE(__main) 57 rts 58