Mercurial > flash_v2
changeset 141:450e4e1f1e80 ecos-sw-2000-11-27
Merge from eCos master repository on 2000-11-27-23:09:27-GMT
line wrap: on
line diff
--- a/packages/ChangeLog +++ b/packages/ChangeLog @@ -1,3 +1,8 @@ +2000-11-25 Jonathan Larmour <jlarmour@redhat.com> + + * pkgconf/rules.mak (mlt_headers): Rewrite to work under Solaris, + and without excessive rebuilds. + 2000-11-16 Jesper Skov <jskov@redhat.com> * ecos.db: Added intel flash driver. Going to use it as a test to
--- a/packages/cygmon/current/ChangeLog +++ b/packages/cygmon/current/ChangeLog @@ -1,3 +1,7 @@ +2000-11-20 Drew Moseley <dmoseley@redhat.com> + + * cdl/cygmon.cdl: Make sure we don't specify vectors.o and target.ld twice. + 2000-11-03 Jonathan Larmour <jlarmour@redhat.com> * cdl/cygmon.cdl: Improve cygmon.elf make dependencies
--- a/packages/cygmon/current/cdl/cygmon.cdl +++ b/packages/cygmon/current/cdl/cygmon.cdl @@ -125,7 +125,7 @@ cdl_package CYGPKG_CYGMON { $(CC) -c -I$(REPOSITORY)/$(PACKAGE)/misc $(INCLUDE_PATH) $(CFLAGS) -DHAVE_BSP -D__ECOS__ -o misc/bsp/common/bsp_cache.o $(REPOSITORY)/$(PACKAGE)/misc/bsp/common/bsp_cache.c $(CC) -c -I$(REPOSITORY)/$(PACKAGE)/misc $(INCLUDE_PATH) $(CFLAGS) -DHAVE_BSP -D__ECOS__ -o misc/bsp/common/gdb-cpu.o $(REPOSITORY)/$(PACKAGE)/misc/bsp/common/gdb-cpu.c $(CC) -c -I$(REPOSITORY)/$(PACKAGE)/misc $(INCLUDE_PATH) $(CFLAGS) -DHAVE_BSP -D__ECOS__ -o misc/bsp/common/hex-utils.o $(REPOSITORY)/$(PACKAGE)/misc/bsp/common/hex-utils.c - $(CC) $(LDFLAGS) -L$(PREFIX)/lib -Ttarget.ld -o $@ $(patsubst $(REPOSITORY)/$(PACKAGE)/%.c,%.o,$^) + $(CC) $(LDFLAGS) -L$(PREFIX)/lib -Ttarget.ld -o $@ $(filter-out %.ld %vectors.o, $(patsubst $(REPOSITORY)/$(PACKAGE)/%.c,%.o,$^)) } } }
--- a/packages/hal/arm/sa11x0/brutus/current/ChangeLog +++ b/packages/hal/arm/sa11x0/brutus/current/ChangeLog @@ -1,3 +1,8 @@ +2000-11-25 Jonathan Larmour <jlarmour@redhat.com> + + * misc/redboot_RAM.cfg: Added new import file for redboot + * misc/redboot_ROM.cfg: Ditto + 2000-11-10 Gary Thomas <gthomas@redhat.com> * cdl/hal_arm_sa11x0_brutus.cdl: Add RedBoot configuration.
new file mode 100644 --- /dev/null +++ b/packages/hal/arm/sa11x0/brutus/current/misc/redboot_RAM.cfg @@ -0,0 +1,57 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware brutus ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_SA11X0 current ; + package -hardware CYGPKG_HAL_ARM_SA11X0_BRUTUS current ; + package -hardware CYGPKG_IO_SERIAL_ARM_SA11X0 current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + inferred_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_component CYG_HAL_STARTUP { + user_value RAM +}; + +cdl_option CYGBLD_BUILD_REDBOOT { + user_value 1 +};
new file mode 100644 --- /dev/null +++ b/packages/hal/arm/sa11x0/brutus/current/misc/redboot_ROM.cfg @@ -0,0 +1,61 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { + description "" ; + hardware brutus ; + template redboot ; + package -hardware CYGPKG_HAL_ARM current ; + package -hardware CYGPKG_HAL_ARM_SA11X0 current ; + package -hardware CYGPKG_HAL_ARM_SA11X0_BRUTUS current ; + package -hardware CYGPKG_IO_SERIAL_ARM_SA11X0 current ; + package -template CYGPKG_HAL current ; + package -template CYGPKG_INFRA current ; + package -template CYGPKG_REDBOOT current ; +}; + +cdl_option CYGBLD_BUILD_GDB_STUBS { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + inferred_value 0 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT { + inferred_value 1 +}; + +cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT { + inferred_value 0 +}; + +cdl_option CYGSEM_HAL_ROM_MONITOR { + user_value 1 +}; + +cdl_option CYGSEM_HAL_USE_ROM_MONITOR { + inferred_value 0 0 +}; + +cdl_component CYG_HAL_STARTUP { + user_value ROM +}; + +cdl_option CYGBLD_BUILD_REDBOOT { + user_value 1 +};
--- a/packages/hal/arm/sa11x0/sa1100mm/current/ChangeLog +++ b/packages/hal/arm/sa11x0/sa1100mm/current/ChangeLog @@ -1,3 +1,11 @@ +2000-11-27 Drew Moseley <dmoseley@redhat.com> + + * src/sa1100mm_misc.c (sa1100mm_program_new_stack): New function + for switching to an application stack when running a program under + a ROM monitor. + + * cdl/hal_arm_sa11x0_sa1100mm. Define HAL_ARCH_PROGRAM_NEW_STACK. + 2000-11-13 Drew Moseley <dmoseley@st-kitts.caribbean> * misc/redboot_ROM.cfg: Turn on REDBOOT_BSP_SYSCALLS.
--- a/packages/hal/arm/sa11x0/sa1100mm/current/cdl/hal_arm_sa11x0_sa1100mm.cdl +++ b/packages/hal/arm/sa11x0/sa1100mm/current/cdl/hal_arm_sa11x0_sa1100mm.cdl @@ -64,6 +64,7 @@ cdl_package CYGPKG_HAL_ARM_SA11X0_SA1100 puts $::cdl_header "#define HAL_PLATFORM_CPU \"StrongARM 1100\"" puts $::cdl_header "#define HAL_PLATFORM_BOARD \"Multimedia development system\"" puts $::cdl_header "#define HAL_PLATFORM_EXTRA \"\"" + puts $::cdl_header "#define HAL_ARCH_PROGRAM_NEW_STACK sa1100mm_program_new_stack" } cdl_component CYG_HAL_STARTUP {
--- a/packages/hal/arm/sa11x0/sa1100mm/current/src/sa1100mm_misc.c +++ b/packages/hal/arm/sa11x0/sa1100mm/current/src/sa1100mm_misc.c @@ -225,3 +225,18 @@ void plf_hardware_init(void) { } + +#include CYGHWR_MEMORY_LAYOUT_H +typedef void code_fun(void); +void sa1100mm_program_new_stack(void *func) +{ + register CYG_ADDRESS stack_ptr asm("sp"); + register CYG_ADDRESS old_stack asm("r4"); + register code_fun *new_func asm("r0"); + old_stack = stack_ptr; + stack_ptr = CYGMEM_REGION_ram + CYGMEM_REGION_ram_SIZE - sizeof(CYG_ADDRESS); + new_func = (code_fun*)func; + new_func(); + stack_ptr = old_stack; + return; +}
--- a/packages/io/flash/current/ChangeLog +++ b/packages/io/flash/current/ChangeLog @@ -1,3 +1,9 @@ +2000-11-27 Jesper Skov <jskov@redhat.com> + + * src/flash.c: Do all flash access inside properly + cache-controlled region. + * include/flash.h: Cache definitions. + 2000-11-17 Jesper Skov <jskov@redhat.com> * src/flash.c: Added debug mode, allowing device driver to use printf.
--- a/packages/io/flash/current/include/flash.h +++ b/packages/io/flash/current/include/flash.h @@ -45,21 +45,24 @@ #define _IO_FLASH_H_ #include <pkgconf/io_flash.h> +#include <cyg/hal/hal_cache.h> #define FLASH_MIN_WORKSPACE 0x10000 // Space used by FLASH code -extern int flash_init(void *work_space, int work_space_length); -extern int flash_erase(void *base, int len, void **err_address); -extern int flash_program(void *flash_base, void *ram_base, int len, void **err_address); +externC int flash_init(void *work_space, int work_space_length); +externC int flash_erase(void *base, int len, void **err_address); +externC int flash_program(void *flash_base, void *ram_base, int len, void **err_address); #if 0 < CYGHWR_IO_FLASH_BLOCK_LOCKING // This is an *interface* -extern int flash_lock(void *base, int len, void **err_address); -extern int flash_unlock(void *base, int len, void **err_address); +externC int flash_lock(void *base, int len, void **err_address); +externC int flash_unlock(void *base, int len, void **err_address); #endif -extern int flash_verify_addr(void *base); -extern int flash_get_limits(void *base, void **start, void **end); -extern int flash_get_block_info(int *block_size, int *blocks); -extern bool flash_code_overlaps(void *start, void *end); -extern char *flash_errmsg(int err); +externC int flash_verify_addr(void *base); +externC int flash_get_limits(void *base, void **start, void **end); +externC int flash_get_block_info(int *block_size, int *blocks); +externC bool flash_code_overlaps(void *start, void *end); +externC char *flash_errmsg(int err); + +externC int printf(char* fmt, ...); #define FLASH_ERR_OK 0x00 // No error - operation complete #define FLASH_ERR_INVALID 0x01 // Invalid FLASH address @@ -89,6 +92,93 @@ extern struct flash_info flash_info; extern int flash_hwr_init(void); extern int flash_hwr_map_error(int err); -#endif + +//--------------------------------------------------------------------------- +//Execution of relocated code must be done inside a +//HAL_FLASH_CACHES_OFF/HAL_FLASH_CACHES_ON region - disabling the +//cache on unified cache systems is necessary to prevent burst access +//to the flash area being programmed. With Harvard style caches, only +//the data cache needs to be disabled, but the instruction cache must +//still be invalidated to ensure the relocated code is properly +//fetched from memory. + +// Targets may provide alternative implementations for these macros in +// the hal_cache.h (or var/plf) files. + +// The first part below is the optimal implementation, but it does not +// always work. The second part is a more safe implementation that has +// been tested to work on some targets - it may not be suitable for +// targets that would do burst access to the flash (data cache needs +// disabling as well). + +// NOTE: Do _not_ change any of the below macros without checking that +// the changed code still works on _all_ platforms that rely on these +// macros. There is no such thing as logical and correct when dealing +// with different cache and IO models, so _do not_ mess with this code +// unless you test it properly afterwards. + +#ifndef HAL_FLASH_CACHES_OFF + +#ifdef HAL_FLASH_CACHES_WANT_OPTIMAL // Optimal implementation + +#ifdef HAL_CACHE_UNIFIED + +// Note: the ucache code has not been tested yet on any target. +#define HAL_FLASH_CACHES_OFF(_d_, _i_) \ + CYG_MACRO_START \ + _i_ = 0; /* avoids warning */ \ + HAL_UCACHE_IS_ENABLED(_d_); \ + HAL_UCACHE_SYNC(); \ + HAL_UCACHE_INVALIDATE_ALL(); \ + HAL_UCACHE_DISABLE(); \ + CYG_MACRO_END + +#define HAL_FLASH_CACHES_ON(_d_, _i_) \ + CYG_MACRO_START \ + if (_d_) HAL_UCACHE_ENABLE(); \ + CYG_MACRO_END + +#else // HAL_CACHE_UNIFIED + +#define HAL_FLASH_CACHES_OFF(_d_, _i_) \ + CYG_MACRO_START \ + _i_ = 0; /* avoids warning */ \ + HAL_DCACHE_IS_ENABLED(_d_); \ + HAL_DCACHE_SYNC(); \ + HAL_DCACHE_INVALIDATE_ALL(); \ + HAL_DCACHE_DISABLE(); \ + HAL_ICACHE_INVALIDATE_ALL(); \ + CYG_MACRO_END + +#define HAL_FLASH_CACHES_ON(_d_, _i_) \ + CYG_MACRO_START \ + if (_d_) HAL_DCACHE_ENABLE(); \ + CYG_MACRO_END + +#endif // HAL_CACHE_UNIFIED + +#else // HAL_FLASH_CACHES_WANT_OPTIMAL + +// Note: This implementation is broken as it will always enable the i-cache +// even if it was not enabled before. It also doesn't work if the +// target uses burst access to flash since the d-cache is left enabled. +// However, this does not mean you can change this code! Leave it as +// is - if you want a different implementation, provide it in the +// arch/var/platform cache header file. + +#define HAL_FLASH_CACHES_OFF(_d_, _i_) \ + _d_ = 0; /* avoids warning */ \ + _i_ = 0; /* avoids warning */ \ + HAL_DCACHE_SYNC(); \ + HAL_ICACHE_DISABLE(); + +#define HAL_FLASH_CACHES_ON(_d_, _i_) \ + HAL_ICACHE_ENABLE(); + +#endif // HAL_FLASH_CACHES_WANT_OPTIMAL + +#endif // HAL_FLASH_CACHES_OFF + +#endif // _FLASH_PRIVATE_ #endif // _IO_FLASH_H_
--- a/packages/io/flash/current/src/flash.c +++ b/packages/io/flash/current/src/flash.c @@ -51,6 +51,7 @@ #define _FLASH_PRIVATE_ #include <cyg/io/flash.h> + // When this flag is set, #undef RAM_FLASH_DEV_DEBUG #if !defined(CYG_HAL_STARTUP_RAM) && defined(RAM_FLASH_DEV_DEBUG) @@ -111,7 +112,6 @@ flash_get_block_info(int *block_size, in *blocks = flash_info.blocks; return FLASH_ERR_OK; } - int flash_erase(void *addr, int len, void **err_addr) { @@ -121,6 +121,7 @@ flash_erase(void *addr, int len, void ** int code_len; typedef int code_fun(unsigned short *); code_fun *_flash_erase_block; + int d_cache, i_cache; if (!flash_info.init) { return FLASH_ERR_NOT_INIT; @@ -130,9 +131,8 @@ flash_erase(void *addr, int len, void ** code_len = (unsigned long)&flash_erase_block_end - (unsigned long)&flash_erase_block; _flash_erase_block = (code_fun *)flash_info.work_space; memcpy(_flash_erase_block, &flash_erase_block, code_len); - HAL_DCACHE_SYNC(); // Should guarantee this code will run - HAL_ICACHE_DISABLE(); // is also required to avoid old contents + HAL_FLASH_CACHES_OFF(d_cache, i_cache); block = (unsigned short *)((unsigned long)addr & flash_info.block_mask); end_addr = (unsigned short *)((unsigned long)addr+len); @@ -151,7 +151,7 @@ flash_erase(void *addr, int len, void ** block += flash_info.block_size / sizeof(*block); printf("."); } - HAL_ICACHE_ENABLE(); + HAL_FLASH_CACHES_ON(d_cache, i_cache); printf("\n"); return (stat); } @@ -166,6 +166,7 @@ flash_program(void *_addr, void *_data, code_fun *_flash_program_buf; unsigned short *addr = (unsigned short *)_addr; unsigned short *data = (unsigned short *)_data; + int d_cache, i_cache; if (!flash_info.init) { return FLASH_ERR_NOT_INIT; @@ -175,10 +176,9 @@ flash_program(void *_addr, void *_data, code_len = (unsigned long)&flash_program_buf_end - (unsigned long)&flash_program_buf; _flash_program_buf = (code_fun *)flash_info.work_space; memcpy(_flash_program_buf, &flash_program_buf, code_len); - HAL_DCACHE_SYNC(); // Should guarantee this code will run - HAL_ICACHE_DISABLE(); // is also required to avoid old contents + HAL_FLASH_CACHES_OFF(d_cache, i_cache); - printf("... Program from %p-%p at %p: ", data, ((unsigned long)data)+len, addr); + printf("... Program from %p-%p at %p: ", data, (void*)(((unsigned long)data)+len), addr); while (len > 0) { size = len; @@ -197,7 +197,7 @@ flash_program(void *_addr, void *_data, addr += size/sizeof(*addr); data += size/sizeof(*data); } - HAL_ICACHE_ENABLE(); + HAL_FLASH_CACHES_ON(d_cache, i_cache); printf("\n"); return (stat); } @@ -213,6 +213,7 @@ flash_lock(void *addr, int len, void **e int code_len; typedef int code_fun(unsigned short *); code_fun *_flash_lock_block; + int d_cache, i_cache; if (!flash_info.init) { return FLASH_ERR_NOT_INIT; @@ -222,8 +223,7 @@ flash_lock(void *addr, int len, void **e code_len = (unsigned long)&flash_lock_block_end - (unsigned long)&flash_lock_block; _flash_lock_block = (code_fun *)flash_info.work_space; memcpy(_flash_lock_block, &flash_lock_block, code_len); - HAL_DCACHE_SYNC(); // Should guarantee this code will run - HAL_ICACHE_DISABLE(); // is also required to avoid old contents + HAL_FLASH_CACHES_OFF(d_cache, i_cache); block = (unsigned short *)((unsigned long)addr & flash_info.block_mask); end_addr = (unsigned short *)((unsigned long)addr+len); @@ -243,7 +243,7 @@ flash_lock(void *addr, int len, void **e block += flash_info.block_size / sizeof(*block); printf("."); } - HAL_ICACHE_ENABLE(); + HAL_FLASH_CACHES_ON(d_cache, i_cache); printf("\n"); return (stat); } @@ -257,6 +257,7 @@ flash_unlock(void *addr, int len, void * int code_len; typedef int code_fun(unsigned short *, int, int); code_fun *_flash_unlock_block; + int d_cache, i_cache; if (!flash_info.init) { return FLASH_ERR_NOT_INIT; @@ -266,8 +267,7 @@ flash_unlock(void *addr, int len, void * code_len = (unsigned long)&flash_unlock_block_end - (unsigned long)&flash_unlock_block; _flash_unlock_block = (code_fun *)flash_info.work_space; memcpy(_flash_unlock_block, &flash_unlock_block, code_len); - HAL_DCACHE_SYNC(); // Should guarantee this code will run - HAL_ICACHE_DISABLE(); // is also required to avoid old contents + HAL_FLASH_CACHES_OFF(d_cache, i_cache); block = (unsigned short *)((unsigned long)addr & flash_info.block_mask); end_addr = (unsigned short *)((unsigned long)addr+len); @@ -287,7 +287,7 @@ flash_unlock(void *addr, int len, void * block += flash_info.block_size / sizeof(*block); printf("."); } - HAL_ICACHE_ENABLE(); + HAL_FLASH_CACHES_ON(d_cache, i_cache); printf("\n"); return (stat); }
--- a/packages/language/c/libc/time/current/ChangeLog +++ b/packages/language/c/libc/time/current/ChangeLog @@ -1,3 +1,7 @@ +2000-11-27 Jesper Skov <jskov@redhat.com> + + * tests/clock.c: Skip fourth sample too. + 2000-11-14 Jesper Skov <jskov@redhat.com> * tests/clock.c: Skip first three samples.
--- a/packages/language/c/libc/time/current/tests/clock.c +++ b/packages/language/c/libc/time/current/tests/clock.c @@ -95,7 +95,8 @@ cyg_start(void) // We ignore ctrs[2] because it always seems to be substantially faster // that the other samples. Probably due to cache/timing effect after the // previous loop. -#define SKIPPED_SAMPLES 3 +// Finally, ctrs[3] is skipped because it's also very fast on ARM targets. +#define SKIPPED_SAMPLES 4 // FUNCTIONS
--- a/packages/pkgconf/rules.mak +++ b/packages/pkgconf/rules.mak @@ -129,10 +129,10 @@ clean: @find . -type f -print | grep -v makefile | xargs rm -f # rule to copy MLT files -mlt_headers: -ifneq ($(strip $(MLT)),) - @install -c $(MLT) $(PREFIX)/include/pkgconf - @chmod u+w $(PREFIX)/include/pkgconf/mlt*.* -endif +mlt_headers: $(foreach x,$(MLT),$(PREFIX)/include/pkgconf/$(notdir $x)) + +$(foreach x,$(MLT),$(PREFIX)/include/pkgconf/$(notdir $x)): $(MLT) + @cp $(dir $<)/$(notdir $@) $(PREFIX)/include/pkgconf + @chmod u+w $(PREFIX)/include/pkgconf/$(notdir $@) # end of file
--- a/packages/redboot/current/ChangeLog +++ b/packages/redboot/current/ChangeLog @@ -1,3 +1,8 @@ +2000-11-27 Drew Moseley <dmoseley@redhat.com> + + * src/main.c: Switch to an application stack before running a + user-downloaded app. + 2000-11-20 Gary Thomas <gthomas@redhat.com> * src/flash.c: Use CYGBLD_REDBOOT_MIN_IMAGE_SIZE.
--- a/packages/redboot/current/src/main.c +++ b/packages/redboot/current/src/main.c @@ -93,6 +93,10 @@ CYG_HAL_TABLE_BEGIN( __RedBoot_CMD_TAB__ CYG_HAL_TABLE_END( __RedBoot_CMD_TAB_END__, RedBoot_commands ); extern struct cmd __RedBoot_CMD_TAB__[], __RedBoot_CMD_TAB_END__; +#ifdef HAL_ARCH_PROGRAM_NEW_STACK +extern void HAL_ARCH_PROGRAM_NEW_STACK(void *fun); +#endif + void do_version(int argc, char *argv[]) { @@ -172,7 +176,11 @@ cyg_start(void) if (res == 0) { // Special case of '$' - need to start GDB protocol CYGACC_CALL_IF_SET_CONSOLE_COMM(cur); +#ifdef HAL_ARCH_PROGRAM_NEW_STACK + HAL_ARCH_PROGRAM_NEW_STACK(breakpoint); +#else breakpoint(); // Get GDB stubs started, with a proper environment, etc. +#endif } else { if (strlen(line) > 0) { if ((cmd = parse(line, &argc, &argv[0])) != (struct cmd *)0) { @@ -288,7 +296,11 @@ do_go(int argc, char *argv[]) HAL_DCACHE_SYNC(); HAL_ICACHE_INVALIDATE_ALL(); HAL_DCACHE_INVALIDATE_ALL(); +#ifdef HAL_ARCH_PROGRAM_NEW_STACK + HAL_ARCH_PROGRAM_NEW_STACK(fun); +#else (*fun)(); +#endif } //
--- a/packages/services/memalloc/common/current/ChangeLog +++ b/packages/services/memalloc/common/current/ChangeLog @@ -1,3 +1,8 @@ +2000-11-25 Jonathan Larmour <jlarmour@redhat.com> + + * cdl/memalloc.cdl: Make sure PWD variable doesn't clash with bash PWD + by renaming to XPWD + 2000-11-24 Jonathan Larmour <jlarmour@redhat.com> * cdl/memalloc.cdl: Invoke heapgen.tcl with build directory
--- a/packages/services/memalloc/common/current/cdl/memalloc.cdl +++ b/packages/services/memalloc/common/current/cdl/memalloc.cdl @@ -231,7 +231,7 @@ cdl_package CYGPKG_MEMALLOC { # an absolute path. make -priority 50 { heaps.cxx : heapgeninc.tcl <PACKAGE>/src/heapgen.tcl - sh -c "PWD=`pwd` ; cd $(REPOSITORY)/$(PACKAGE)/src ; sh heapgen.tcl \"$(PREFIX)\" \"$$PWD\"" + XPWD=`pwd` ; cd $(REPOSITORY)/$(PACKAGE)/src ; sh heapgen.tcl "$(PREFIX)" "$$XPWD" @cp heaps.hxx "$(PREFIX)"/include/pkgconf/heaps.hxx @chmod u+w "$(PREFIX)"/include/pkgconf/heaps.hxx }
