diff options
-rw-r--r-- | extra/AmigaOS.c | 5 | ||||
-rw-r--r-- | mach_dep.c | 7 | ||||
-rw-r--r-- | os_dep.c | 17 |
3 files changed, 16 insertions, 13 deletions
diff --git a/extra/AmigaOS.c b/extra/AmigaOS.c index e0cbbd74..07feb75b 100644 --- a/extra/AmigaOS.c +++ b/extra/AmigaOS.c @@ -87,10 +87,9 @@ ptr_t GC_get_main_stack_base() /* Reference: Amiga Guru Book Pages: 538ff,565,573 and XOper.asm */ + myseglist = proc->pr_SegList; if (proc->pr_Task.tc_Node.ln_Type==NT_PROCESS) { - if (proc->pr_CLI == NULL) { - myseglist = proc->pr_SegList; - } else { + if (proc->pr_CLI != NULL) { /* ProcLoaded 'Loaded as a command: '*/ cli = BADDR(proc->pr_CLI); myseglist = cli->cli_Module; @@ -243,6 +243,9 @@ GC_INNER void GC_with_callee_saves_pushed(void (*fn)(ptr_t, void *), /* client application to use -lm linker option. */ unsigned short old_fcw; +# if defined(CPPCHECK) + GC_noop1((word)&old_fcw); +# endif __asm__ __volatile__ ("fstcw %0" : "=m" (*&old_fcw)); # else int except_mask = fegetexcept(); @@ -292,8 +295,8 @@ GC_INNER void GC_with_callee_saves_pushed(void (*fn)(ptr_t, void *), /* We're not sure whether he would like */ /* to be acknowledged for it or not. */ jmp_buf regs; - register word * i = (word *) regs; - register ptr_t lim = (ptr_t)(regs) + (sizeof regs); + register word * i = (word *) ®s; + register ptr_t lim = (ptr_t)(®s) + (sizeof regs); /* Setjmp doesn't always clear all of the buffer. */ /* That tends to preserve garbage. Clear it. */ @@ -1203,14 +1203,11 @@ GC_INNER size_t GC_page_size = 0; # else result = (ptr_t)((word)GC_approx_sp() & ~STACKBOTTOM_ALIGNMENT_M1); # endif -# endif /* HEURISTIC1 */ -# ifdef LINUX_STACKBOTTOM +# elif defined(LINUX_STACKBOTTOM) result = GC_linux_main_stack_base(); -# endif -# ifdef FREEBSD_STACKBOTTOM +# elif defined(FREEBSD_STACKBOTTOM) result = GC_freebsd_main_stack_base(); -# endif -# ifdef HEURISTIC2 +# elif defined(HEURISTIC2) { ptr_t sp = GC_approx_sp(); # ifdef STACK_GROWS_DOWN @@ -1231,8 +1228,12 @@ GC_INNER size_t GC_page_size = 0; # endif # endif } -# endif /* HEURISTIC2 */ -# ifdef STACK_GROWS_DOWN +# elif defined(CPPCHECK) + result = NULL; +# else +# error None of HEURISTIC* and *STACKBOTTOM defined! +# endif +# if defined(STACK_GROWS_DOWN) && !defined(CPPCHECK) if (result == 0) result = (ptr_t)(signed_word)(-sizeof(ptr_t)); # endif |