Again - any chance you trace this using the Forth debugger instead? Otherwise it's pretty much impossible to find out where you are in the Forth code by catching it at the system level.
A little more info...I suspect I'll have a few e-mails like this out today :-). Looks like it's failing in read-file - here's the output:
0 > do-boot : do-boot ( Empty ) 00000000ffe386b0: parse-bootargs ( Empty ) 00000000ffe386b8: halt? ( 0 ) 00000000ffe386c0: do?branch ( Empty ) 00000000ffe38710: get-bootdev ( Empty ) 00000000ffe38718: load-pkg ( Empty ) 00000000ffe38720: mount-root : open-package ( ffe35570 7 ffe32320 ) 00000000ffe13ca0: create-instance ( ffe35570 7 ffe49330 ) 00000000ffe13ca8: dup ( ffe35570 7 ffe49330 ffe49330 ) 00000000ffe13cb0: 0= ( ffe35570 7 ffe49330 0 ) 00000000ffe13cb8: do?branch ( ffe35570 7 ffe49330 ) 00000000ffe13ce0: >r ( ffe35570 7 ) 00000000ffe13ce8: strdup ( ffe47df8 7 ) 00000000ffe13cf0: r@ ( ffe47df8 7 ffe49330 ) 00000000ffe13cf8: >in.arguments ( ffe47df8 7 ffe49378 ) 00000000ffe13d00: 2! ( Empty ) 00000000ffe13d08: (") ( ffe13d18 4 ) 00000000ffe13d20: r@ ( ffe13d18 4 ffe49330 ) 00000000ffe13d28: (lit) ( ffe13d18 4 ffe49330 ffe13a88 ) 00000000ffe13d38: catch : open-package ( 1 ffe30530 ffe4a818 ffe4ab88 0 0 ffe2afa0 ) 00000000ffe13ca0: create-instance ( 1 ffe30530 ffe4a818 ffe4ab88 0 0 ffe4ab98 ) 00000000ffe13ca8: dup ( 1 ffe30530 ffe4a818 ffe4ab88 0 0 ffe4ab98 ffe4ab98 ) 00000000ffe13cb0: 0= ( 1 ffe30530 ffe4a818 ffe4ab88 0 0 ffe4ab98 0 ) 00000000ffe13cb8: do?branch ( 1 ffe30530 ffe4a818 ffe4ab88 0 0 ffe4ab98 ) 00000000ffe13ce0: >r ( 1 ffe30530 ffe4a818 ffe4ab88 0 0 ) 00000000ffe13ce8: strdup ( 1 ffe30530 ffe4a818 ffe4ab88 0 0 ) 00000000ffe13cf0: r@ ( 1 ffe30530 ffe4a818 ffe4ab88 0 0 ffe4ab98 ) 00000000ffe13cf8: >in.arguments ( 1 ffe30530 ffe4a818 ffe4ab88 0 0 ffe4abe0 ) 00000000ffe13d00: 2! ( 1 ffe30530 ffe4a818 ffe4ab88 ) 00000000ffe13d08: (") ( 1 ffe30530 ffe4a818 ffe4ab88 ffe13d18 4 ) 00000000ffe13d20: r@ ( 1 ffe30530 ffe4a818 ffe4ab88 ffe13d18 4 ffe4ab98 ) 00000000ffe13d28: (lit) ( 1 ffe30530 ffe4a818 ffe4ab88 ffe13d18 4 ffe4ab98 ffe13a88 ) 00000000ffe13d38: catch ( 1 ffe30530 ffe4a818 ffe4ab88 ffffffffffffffff 0 ) 00000000ffe13d40: do?branch ( 1 ffe30530 ffe4a818 ffe4ab88 ffffffffffffffff ) 00000000ffe13d60: do?branch ( 1 ffe30530 ffe4a818 ffe4ab88 ) 00000000ffe13d70: r> ( 1 ffe30530 ffe4a818 ffe4ab88 ffe4ab98 ) 00000000ffe13d78: dobranch ( 1 ffe30530 ffe4a818 ffe4ab88 ffe4ab98 ) 00000000ffe13da0: (semis) [ Finished open-package ] ( 1 ffe30530 ffe30530 ffe4a818 ffec3658 1 ffe2bc20 ) 00000000ffe13ca0: create-instance ( 1 ffe30530 ffe30530 ffe4a818 ffec3658 1 ffe4acc0 ) 00000000ffe13ca8: dup ( 1 ffe30530 ffe30530 ffe4a818 ffec3658 1 ffe4acc0 ffe4acc0 ) 00000000ffe13cb0: 0= ( 1 ffe30530 ffe30530 ffe4a818 ffec3658 1 ffe4acc0 0 ) 00000000ffe13cb8: do?branch ( 1 ffe30530 ffe30530 ffe4a818 ffec3658 1 ffe4acc0 ) 00000000ffe13ce0: >r ( 1 ffe30530 ffe30530 ffe4a818 ffec3658 1 ) 00000000ffe13ce8: strdup ( 1 ffe30530 ffe30530 ffe4a818 ffe493a0 1 ) 00000000ffe13cf0: r@ ( 1 ffe30530 ffe30530 ffe4a818 ffe493a0 1 ffe4acc0 ) 00000000ffe13cf8: >in.arguments ( 1 ffe30530 ffe30530 ffe4a818 ffe493a0 1 ffe4ad08 ) 00000000ffe13d00: 2! ( 1 ffe30530 ffe30530 ffe4a818 ) 00000000ffe13d08: (") ( 1 ffe30530 ffe30530 ffe4a818 ffe13d18 4 ) 00000000ffe13d20: r@ ( 1 ffe30530 ffe30530 ffe4a818 ffe13d18 4 ffe4acc0 ) 00000000ffe13d28: (lit) ( 1 ffe30530 ffe30530 ffe4a818 ffe13d18 4 ffe4acc0 ffe13a88 ) 00000000ffe13d38: catch ( 1 ffe30530 ffe30530 ffe4a818 ffffffffffffffff 0 ) 00000000ffe13d40: do?branch ( 1 ffe30530 ffe30530 ffe4a818 ffffffffffffffff ) 00000000ffe13d60: do?branch ( 1 ffe30530 ffe30530 ffe4a818 ) 00000000ffe13d70: r> ( 1 ffe30530 ffe30530 ffe4a818 ffe4acc0 ) 00000000ffe13d78: dobranch ( 1 ffe30530 ffe30530 ffe4a818 ffe4acc0 ) 00000000ffe13da0: (semis) [ Finished open-package ] ( ffffffffffffffff 0 ) 00000000ffe13d40: do?branch ( ffffffffffffffff ) 00000000ffe13d60: do?branch ( Empty ) 00000000ffe13d70: r> ( ffe49330 ) 00000000ffe13d78: dobranch ( ffe49330 ) 00000000ffe13da0: (semis) [ Finished open-package ] ( Empty ) 00000000ffe38728: zflag? ( 0 ) 00000000ffe38730: nested? ( 0 0 ) 00000000ffe38738: invert ( 0 ffffffffffffffff ) 00000000ffe38740: and ( 0 ) 00000000ffe38748: do?branch ( Empty ) 00000000ffe38768: load-file : load-file ( Empty ) 00000000ffe384c0: get-arch ( Empty ) 00000000ffe384c8: get-targ ( ffe36d48 c ) 00000000ffe384d0: open-path : open-path ( ffe36d48 c ) 00000000ffe36ef0: over ( ffe36d48 c ffe36d48 ) 00000000ffe36ef8: c@ ( ffe36d48 c 62 ) 00000000ffe36f00: (lit) ( ffe36d48 c 62 2f ) 00000000ffe36f10: <> ( ffe36d48 c ffffffffffffffff ) 00000000ffe36f18: do?branch ( ffe36d48 c ) 00000000ffe36f28: 2dup ( ffe36d48 c ffe36d48 c ) 00000000ffe36f30: plat-name$ ( ffe36d48 c ffe36d48 c ffe36400 5 ) 00000000ffe36f38: $plat-prepend ( ffe36d48 c ffe366b0 1c ) 00000000ffe36f40: try-file ( ffe36d48 c 0 0 ) 00000000ffe36f48: do?branch ( ffe36d48 c 0 ) 00000000ffe36f90: dobranch ( ffe36d48 c 0 ) 00000000ffe37008: -rot ( 0 ffe36d48 c ) 00000000ffe37010: 2drop ( 0 ) 00000000ffe37018: (semis) [ Finished open-path ] ( 0 ) 00000000ffe384d8: loader-base : loader-base ( 0 ) 00000000ffe356c8: nested? ( 0 0 ) 00000000ffe356d0: do?branch ( 0 ) 00000000ffe35700: (lit) ( 0 51000000 ) 00000000ffe35710: (semis) [ Finished loader-base ] ( 0 51000000 ) 00000000ffe384e0: over primitive words cannot be debugged ( 0 51000000 0 ) 00000000ffe384e8: get-file : get-file ( 0 51000000 0 ) 00000000ffe35ef8: dup ( 0 51000000 0 0 ) 00000000ffe35f00: >r ( 0 51000000 0 ) 00000000ffe35f08: ( 0 51000000 d746c00 ) 00000000ffe35f10: dup ( 0 51000000 d746c00 d746c00 ) 00000000ffe35f18: rot ( 0 d746c00 d746c00 51000000 ) 00000000ffe35f20: vmem-alloc-prop ( 0 d746c00 0 51000000 ) 00000000ffe35f28: rot ( 0 0 51000000 d746c00 ) 00000000ffe35f30: 2dup ( 0 0 51000000 d746c00 51000000 d746c00 ) 00000000ffe35f38: r> ( 0 0 51000000 d746c00 51000000 d746c00 0 ) 00000000ffe35f40: read-file : read-file ( 0 0 51000000 d746c00 51000000 d746c00 0 ) 00000000ffe35da8: >r ( 0 0 51000000 d746c00 51000000 d746c00 ) 00000000ffe35db0: dup ( 0 0 51000000 d746c00 51000000 d746c00 d746c00 ) 00000000ffe35db8: do?branch ( 0 0 51000000 d746c00 51000000 d746c00 ) ( 0 0 51000000 d746c00 51000000 d746c00 ) 00000000ffe35dd0: dup ( 0 0 51000000 d746c00 51000000 d746c00 d746c00 ) 00000000ffe35dd8: ( 0 0 51000000 d746c00 51000000 d746c00 d746c00 400000 ) 00000000ffe35de0: min ( 0 0 51000000 d746c00 51000000 d746c00 400000 ) 00000000ffe35de8: 2 ( 0 0 51000000 d746c00 51000000 d746c00 400000 2 ) 00000000ffe35df0: pick ( 0 0 51000000 d746c00 51000000 d746c00 400000 51000000 ) 00000000ffe35df8: 2 ( 0 0 51000000 d746c00 51000000 d746c00 400000 51000000 2 ) 00000000ffe35e00: pick ( 0 0 51000000 d746c00 51000000 d746c00 400000 51000000 d746c00 ) 00000000ffe35e08: 2 ( 0 0 51000000 d746c00 51000000 d746c00 400000 51000000 d746c00 2 ) 00000000ffe35e10: pick ( 0 0 51000000 d746c00 51000000 d746c00 400000 51000000 d746c00 400000 ) 00000000ffe35e18: nip ( 0 0 51000000 d746c00 51000000 d746c00 400000 51000000 400000 ) 00000000ffe35e20: r@ ( 0 0 51000000 d746c00 51000000 d746c00 400000 51000000 400000 0 ) 00000000ffe35e28: Unhandled Exception 0x0000000000000032 PC = 0x00000000ffd1bad0 NPC = 0x00000000ffd1baa4 Stopping execution
Curiously the PC location for the error has changed - according to the output above, here's the gdb location:
(gdb) l *0x00000000ffd1bad0 0xffd1bad0 is in ob_ide_insw (./target/include/asm/io.h:165). 160 { 161 uint16_t *b = (uint16_t *) buf; 162 163 while (ns > 0) { 164 *b++ = in_le16(port); 165 ns--; 166 } 167 } 168 169 static inline void _outsw_ns(volatile uint16_t * port, const void *buf,
-Nick
-------- This e-mail may contain confidential and privileged material for the sole use of the intended recipient. If this email is not intended for you, or you are not responsible for the delivery of this message to the intended recipient, please note that this message may contain SEAKR Engineering (SEAKR) Privileged/Proprietary Information. In such a case, you are strictly prohibited from downloading, photocopying, distributing or otherwise using this message, its contents or attachments in any way. If you have received this message in error, please notify us immediately by replying to this e-mail and delete the message from your mailbox. Information contained in this message that does not relate to the business of SEAKR is neither endorsed by nor attributable to SEAKR.