Mail Archives: djgpp-workers/2002/12/19/17:52:16
Proposed patches for modularity. Smaller, more modular fix for ds_alias
included (just copy the 2 bytes to locked area for locked only usage).
*** crt0.S_ Thu Aug 16 21:36:14 2001
--- crt0.S Thu Dec 19 12:39:58 2002
***************
*** 36,39 ****
--- 36,41 ----
.comm ___djgpp_selector_limit, 4
.comm ___djgpp_stack_limit, 4
+ .comm __crt0_startup_flags, 4
+ .comm ___djgpp_ds_alias, 2
.lcomm sel_buf, 8
/* ___djgpp_ds_alias defined in go32/exceptn.S */
*** crt1.c_ Wed Feb 20 19:10:24 2002
--- crt1.c Thu Dec 19 12:30:28 2002
*************** int __bss_count = 1;
*** 36,40 ****
char **environ;
- int _crt0_startup_flags; /* default to zero unless app overrides them */
int __crt0_argc;
--- 36,39 ----
*** exceptn.bak Thu Jan 4 15:39:14 2001
--- exceptn.s Thu Dec 19 12:52:48 2002
*************** not_forced:
*** 150,154 ****
je stack_ok
.byte 0x2e /* CS: */
! movw ___djgpp_ds_alias,%di
cmpw %di,32(%ebp) /* if it's DS alias, switch to normal DS */
jne 1f
--- 150,154 ----
je stack_ok
.byte 0x2e /* CS: */
! movw ___excep_ds_alias,%di
cmpw %di,32(%ebp) /* if it's DS alias, switch to normal DS */
jne 1f
*************** ___djgpp_old_timer: .long 0,0
*** 302,307 ****
___djgpp_exception_state_ptr: .long 0
exception_state: .space 64
! .global ___djgpp_ds_alias
! ___djgpp_ds_alias: .word 0 /* used in dpmi/api/d0303.S (alloc rmcb) */
.balign 16,,7
--- 302,307 ----
___djgpp_exception_state_ptr: .long 0
exception_state: .space 64
! .global ___excep_ds_alias
! ___excep_ds_alias: .word 0
.balign 16,,7
*************** ___djgpp_timer_hdlr:
*** 401,405 ****
je 4f
pushl %ds
! movw %cs:___djgpp_ds_alias, %ds
decl ___djgpp_timer_countdown
popl %ds
--- 401,405 ----
je 4f
pushl %ds
! movw %cs:___excep_ds_alias, %ds
decl ___djgpp_timer_countdown
popl %ds
*** dpmiexcp.bak Tue Dec 11 21:35:36 2001
--- dpmiexcp.c Thu Dec 19 12:55:12 2002
*************** extern int __djgpp_npx_hdlr;
*** 37,40 ****
--- 37,41 ----
extern int __djgpp_kbd_hdlr;
extern int __djgpp_kbd_hdlr_pc98;
+ extern short __excep_ds_alias;
extern int __djgpp_iret, __djgpp_i24;
extern void __djgpp_cbrk_hdlr(void);
*************** __djgpp_exception_setup(void)
*** 519,522 ****
--- 520,524 ----
size_t i;
+ __excep_ds_alias = __djgpp_ds_alias;
if (ScreenPrimary != 0xa0000)
{
- Raw text -