From: Tormod Volden Date: Thu, 4 Jun 2015 07:40:45 +0000 (+0200) Subject: dragon-nx32: Only copy used memory on fork X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=8f507c671d760989d3b79bebfaa41b6809ee48fc;p=FUZIX.git dragon-nx32: Only copy used memory on fork Speed up forking by not copying the space between heap and stack. Alan's suggestion. Signed-off-by: Tormod Volden --- diff --git a/Kernel/platform-dragon-nx32/kernel.def b/Kernel/platform-dragon-nx32/kernel.def index f5b907a7..c1ee1112 100644 --- a/Kernel/platform-dragon-nx32/kernel.def +++ b/Kernel/platform-dragon-nx32/kernel.def @@ -8,6 +8,8 @@ U_DATA_STASH equ 0xFC00 ; FC00-FEFF VIDEO_BASE equ 0x0400 ; 6K for the display VIDEO_END equ 0x1C00 +PROGBASE equ 0x8000 ; programs and data start here + ; Have these defined so that lowlevel-6809.s can be used as-is SAM_USER macro endm diff --git a/Kernel/platform-dragon-nx32/tricks.s b/Kernel/platform-dragon-nx32/tricks.s index 3a0660e3..a0506348 100644 --- a/Kernel/platform-dragon-nx32/tricks.s +++ b/Kernel/platform-dragon-nx32/tricks.s @@ -256,9 +256,12 @@ fork_copy: ldx fork_proc_ptr ldb P_TAB__P_PAGE_OFFSET+1,x ; new bank lda U_DATA__U_PAGE+1 ; old bank - ldx #0x8000 ; PROGBASE - ldu U_DATA__U_TOP + ldx #PROGBASE + ldu U_DATA__U_BREAK ; top of data jsr copybank ; preserves A,B, clobbers X,U + ldx U_DATA__U_SP + ldu U_DATA__U_TOP ; top of process memory + jsr copybank ; stash parent uarea (including kernel stack) jsr map_process_a