diff packages/hal/sparclite/arch/current/ChangeLog @ 2:443894e2e912 ecos-v1_2_1-release

Block commit of eCos version 1.2.1
author jlarmour
date Tue, 11 May 1999 12:24:34 +0000
parents
children 1d7f19c9e4d1
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/packages/hal/sparclite/arch/current/ChangeLog
@@ -0,0 +1,485 @@
+1999-04-15  Jonathan Larmour  <jlarmour@cygnus.co.uk>
+
+	* src/sparclite.ld: Define __bss_end at the end of the BSS
+	* src/hal_boot.c (hal_zero_bss): Stop at __bss_end rather than _end
+	when clearing BSS
+	
+	These fix PR 19750
+
+1999-04-14  Jonathan Larmour  <jlarmour@cygnus.co.uk>
+
+	* src/PKGconf.mak (EXTRAS): Don't generate extras.o here any more
+	But do define EXTRAS every time for the linker script.
+
+1999-04-09  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* include/hal_intr.h (HAL_RESTORE_INTERRUPTS et al): Put in 3 nops
+	after any writes to the psr; TBH I don't think they're strictly
+	necessary when not altering the window state, but for complete
+	safety and adherence to the book of words....
+
+1999-04-08  John Dallaway  <jld@cygnus.co.uk>
+
+	* src/*.ld: Revised SECTION_* macro arguments to
+	avoid padded output sections (PR 19787)
+
+1999-04-07  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* include/hal_io.h: If not the simulator, get hal_hwio.h too -
+	which describes board-and-CPUvariant-specific IO needs.
+
+1999-04-07  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* include/hal_intr.h (HAL_VSR_SET_TO_ECOS_HANDLER): Define this
+	macro for use in tests that are interested in exception diddling.
+	Redefine CYGNUM_HAL_ISR_MIN to describe the number of interrupt
+	sources; while there are XSRs too, this definition is better for
+	the error checking in kernel interrupt stuff.  Changed the symbols
+	used for defining tables sizes to match, since there are still 27
+	VSRs and ISRs/XSRs and their data.
+
+	* src/hal_intr.c: Use the correct symbol for the size of the
+	isr/vsr/their-data tables.
+
+1999-03-26  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* tests/sparc_ex.c (cyg_[user_]start):
+	If there is no kernel, cyg_user_start() is never called, main gets
+	in and steals the CPU.  So we hang.  So if there is no kernel,
+	define cyg_start() instead to wrest control.
+
+1999-03-22  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* include/hal_arch.h (CYGNUM_HAL_STACK_SIZE_TYPICAL): 
+	And this time make the edit correctly ;-/
+
+1999-03-22  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* include/hal_arch.h: 
+	Use CYGNUM_HAL_STACK_SIZE_TYPICAL for the stack size instead of
+	CYGNUM_HAL_MINIMUM_STACK_SIZE.
+
+1999-03-17  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* src/vectors.S (rom_vectors_end, rom_vectors): Add two new
+	symbols for copying trampoline code into RAM in ROM startup.  This
+	keeps ROM startup as similar as possible to RAM, for simplicity;
+	no re-ordering of vectors.S's contents.
+
+	* src/hal_boot.c (hal_copy_data): Copy in long sized units rather
+	than long longs, better to cope with ROM data alignment.
+	Also add some LED output (if SLEB hardware) for startup to help
+	with debugging ROM start.
+
+1999-03-17  John Dallaway  <jld@cygnus.co.uk>
+
+	* src/PKGconf.mak: Remove dependence on echo '-e' switch.
+
+1999-03-16  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* src/vectors.S (genuine_reset): Add a little extra debug to SLEB
+	LEDs, and use the genuine top-of-memory stack when running on
+	hardware; only define cyg_bootup_stack in the simulator case.
+
+	* src/sparclite.ld: Define rom_data_start, regardless of start
+	type, no harm is done.
+
+1999-03-12  Gary Thomas  <gthomas@cygnus.co.uk>
+
+	* include/pkgconf/hal_sparclite.h: 
+	* include/hal_arch.h: Moved definition of 'CYGNUM_HAL_MINIMUM_STACK_SIZE'
+
+1999-03-11  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* src/icontext.c (cyg_hal_sparc_[gs]et_gdb_regs): 
+	Two new routines to communicate our nice, optimized stack save
+	states to a reg list for GDB.  My maximal register saves are not
+	really suitable for passing to GDB in any case, they're for humans
+	to debug the interrupt code more than anything else, and my
+	minimal save sets naturally contain pointers and ways of finding
+	the rest of the reg set, but it depends on whether it's an
+	interrupt save or a synchronous one, and given the SPARClite's
+	stack layout, it's a bit hairy.
+
+	* src/vec_ivsr.S (hal_default_interrupt_vsr): 
+	Do save %g0 even in a minimal context, so that the code for
+	communicating register state with GDB can tell it's a minimum
+	context.  Costs one store cycle per interrupt.
+
+	* include/hal_arch.h (HAL_[GS]ET_GDB_REGISTERS): 
+	Define and call routines cyg_hal_sparc_[gs]et_gdb_regs for 
+	communicating register state of a thread to GDB.
+
+	* src/vectors.S (real_vector): Reinstate the anullment of the
+	instructions that were blamed for register corruption earlier;
+	they are correct and safe.
+
+1999-03-10  Jesper Skov  <jskov@cygnus.co.uk>
+
+	* include/hal_intr.h (HAL_INTERRUPT_IN_USE): Added.
+
+1999-03-09  Gary Thomas  <gthomas@cygnus.co.uk>
+
+	* src/hal_boot.c: Added missing <cyg/infra/cyg_type.h> include file.
+
+1999-03-05  Gary Thomas  <gthomas@cygnus.co.uk>
+
+	* src/sparclite.ld: 
+	* src/PKGconf.mak: Clean up I/O package changes.
+
+1999-03-04  Jonathan Larmour  <jlarmour@cygnus.co.uk>
+
+	* src/sparclite.ld: 
+	Unconditionalize use of libextras.a and add to GROUP()
+
+1999-03-04  Gary Thomas  <gthomas@cygnus.co.uk>
+
+	* src/PKGconf.mak: 
+	* src/sparclite.ld: New I/O package support.
+
+	* src/vectors.S: Fix register corruption problem - stems from
+	use of annulled instructions in window overflow/underflow code.
+
+1999-02-25  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	These log entries from 1999-02-22 to 1999-02-24 were executed in
+	a branch; this change is a merge of that branch into the trunk.
+
+	(1999-02-24  Hugo Tyson  <hmt@cygnus.co.uk>)
+
+	* tests/sparc_ex.c (sparc_ex_main): 
+	For all traps except the USER_TRAP, install the default VSR
+	hal_default_exception_vsr(); this is so that this test catches
+	exception ie. is able to work, even when we are playing nice with
+	CygMon and GDB.  The USER_TRAP is left so that breakpoints work,
+	for the test infrastructure.
+
+	(1999-02-22  Hugo Tyson  <hmt@cygnus.co.uk>)
+
+	* src/vectors.S (real_vector): Remove old testing code.  Add delay
+	NOPs after writes to %wim and %psr for safety.  Leave installing
+	the trap vector to platform-specific code, along with RAM control
+	and cache initialization.
+
+	* src/vec_ivsr.S (hal_default_interrupt_vsr): Add delay NOPs after
+	writing the %wim before doing a restore; that was a bug that was.
+
+	* src/vec_xvsr.S (hal_default_exception_vsr): same change.
+
+	* src/hal_intr.c: Remove platform-specific clock period variable; it
+	happens that both platforms sim and sleb have one, but it's not a
+	requirement of the target architecture.
+
+	* src/hal_boot.c (cyg_hal_start): Move diddling the sim-specific
+	watchdog into platform-specific startup code viz. new routines
+	hal_board_{pre/post}start().
+
+	* src/context.S: a couple of extra NOPs to ensure that %wim and
+	%psr changes work on real hardware.
+
+	(1999-02-22  Hugo Tyson  <hmt@cygnus.co.uk>)
+
+	* include/hal_arch.h (HAL_SET_GDB_REGISTERS): 
+	Remove warning about unused var 'cos of the incompleteness of
+	these macros; gdb interworking is not yet supported.
+
+1999-02-25  Nick Garnett  <nickg@cygnus.co.uk>
+
+	* include/vectors.h:
+	Changed label used to access scheduler lock to one that is not
+	mangled by C++. This is intended to make support for interrupt
+	handling in non-kernel configurations easier.	
+
+1999-02-20  Jonathan Larmour  <jlarmour@cygnus.co.uk>
+
+	* include/hal_arch.h: 
+	Rename deliver_exception() -> cyg_hal_deliver_exception()
+	QA improvements
+	
+	* include/hal_intr.h:
+	Reorganise vector/interrupt/exception names according to purpose
+	Rename exception_handler() -> cyg_hal_exception_handler()
+	QA improvements
+
+	* src/hal_intr.c:
+	Rename exception_handler() -> cyg_hal_exception_handler()
+	Rename deliver_exception() -> cyg_hal_deliver_exception()
+	Rename CYG_ISR_COUNT -> CYGNUM_HAL_ISR_COUNT
+	QA improvements
+
+	* src/vec_ivsr.S:
+	* src/vec_xvsr.S:
+	Rename CYG_ISR_COUNT -> CYGNUM_HAL_ISR_COUNT
+	QA improvements
+
+	* tests/sparc_ex.c:
+	Rename CYG_EXCEPTION_* -> CYGNUM_HAL_EXCEPTION_*
+	Rename CYG_VECTOR_UNALIGNED -> CYGNUM_HAL_VECTOR_UNALIGNED
+
+1999-02-12  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* src/context.S (hal_thread_load_context, hal_setjmp):
+	Disable interrupts (but not traps) while doing the flush of all my
+	callers and their callers' callers register sets to the stack.
+	There is evidence that the inconsistency in the stack during this
+	is a bad thing, though I have to admit that I don't see exactly
+	how it goes wrong.  Partly, it's impossible to debug, so if the
+	problem I saw (a SEGV in instrumentation of interrupt_end()) is
+	reproduced with this change, I'll have more to go on.  This is a
+	conservative change in that sense.
+	
+	* include/hal_arch.h (HAL_FLUSH_REGISTERS_TO_STACK): 
+	Disable interrupts but not traps while doing this.  Ditto.
+
+1999-02-12  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* include/pkgconf/hal_sparclite.h (CYGNUM_HAL_MINIMUM_STACK_SIZE):
+	Define a minimal sensible stack size for apps to use.  Note that
+	this file is included by hal_arch.h and so is available to all HAL
+	users, and in fact almost everyone by default.
+
+1999-02-12  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* src/hal_intr.c (exception_handler): 
+	Include <cyg/infra/cyg_ass.h> so that the CYG_FAIL() in some
+	configurations actually compiles (actually: links).
+	combo{22,18,10,6} were thus afflicted.
+
+1999-02-11  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* tests/sparc_ex.c (do_test): Make the test run for much less time
+	when CYG_USE_TRACING and in any case bleat periodically about how
+	successful it is to prevent testing system timeouts.  Also move
+	the test routines (those which provoke the exception) to the end
+	so that (ever helpful) -O3 cannot inline them and then "optimize"
+	the result and thus spoil the whole damned test too.
+
+1999-02-08  John Dallaway  <jld@cygnus.co.uk>
+
+	* include/pkgconf/hal_sparclite.h: Correct capitalization of
+	'SPARClite'.
+
+1999-02-08  John Dallaway  <jld@cygnus.co.uk>
+
+	* src/sparclite.ld: New MLT-compatible linker script
+	* src/PKGconf.mak: Add build rules for sparclite.ld
+
+1999-02-04  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* src/vec_ivsr.S (hal_default_interrupt_vsr): Preserve global
+	registers over interrupts, and implement support for
+	CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT ie. save a
+	minimal register set rather than a maximal.  Create a saved
+	register set whose address is passed to the interrupt handler
+	(though it may well be mostly empty).
+	[also tidied up trailing tabs and long blank lines]
+
+	* src/vec_xvsr.S (hal_default_exception_vsr): Preserve all
+	registers over interrupts; create a saved register set whose
+	address is passed to the exception handler so it can modify it.
+	[also tidied up trailing tabs and long blank lines]
+
+	* src/context.S( hal_setjmp, hal_longjmp):
+	(hal_thread_switch_context,hal_thread_load_context): Implement
+	CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM support; ie. save a minimal
+	register set rather than a maximal.
+	
+	* include/hal_arch.h (HAL_FLUSH_REGISTERS_TO_STACK): New macro
+	useful for writing exception handlers, for example.
+	(HAL_GET_GDB_REGISTERS, HAL_SET_GDB_REGISTERS): provided initial
+	dummy versions of these.
+
+	* tests/sparc_ex.c: A test of the exception mechanism:
+	deliberately cause unaligned accesses of various sizes and check
+	we get exactly one trap and correctly step over it by modifying
+	the saved register set whose address the exception ISR is handed.
+	This test should be regarded as documentation for the exception
+	handler API/ABI.
+	
+	* tests/PKGconf.mak (TESTS): Build sparc_ex.
+
+1999-02-01  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* src/vectors.S (genuine_reset): 
+	Include <cyg/hal/halboot.si> to set up RAM controllers, cache and
+	the like - this is rather platform dependant.
+
+1999-02-01  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* include/hal_intr.h (HAL_TRANSLATE_VECTOR): 
+	Include a definition of this important macro.  Not.
+	It's used when interrupt chaining is selected, BUT we the HAL make
+	no distinction, it's up to the kernel to look after things.  So
+	this macro is an assignment.
+
+1999-01-28  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* include/hal_intr.h: 
+	Get interrupt controller definitions from a board-specific file:
+	#include <cyg/hal/hal_xpic.h>
+	Get clock control definitions from a board-specific file:
+	#include <cyg/hal/hal_clock.h>
+	Delete the original definitions from this central file.
+	
+	* include/hal_cache.h: REMOVED to the simulator tree in the first
+	instance; more generally to various board-specific files.
+
+
+1999-01-26  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* include/hal_cache.h (HAL_DCACHE_ENABLE) (and its friends):
+	Define initial empty placeholder versions of these so that cache
+	tests build.  Well it's a start.
+	
+1999-01-21  Jonathan Larmour  <jlarmour@cygnus.co.uk>
+
+	* src/hal_boot.c (cyg_hal_invoke_constructors): 
+	Add code to deal with CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+	Tidy up and update description header
+	Shorten needlessly long lines
+	Remove all traces of non-CYG_KERNEL_USE_INIT_PRIORITY code
+
+1999-01-21  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* src/vectors.S (genuine_reset): Set the RAM size to 4MB in the
+	erc32 simulator.
+
+	* include/hal_io.h: New file; macros to access IO space, really a
+	place holder at present.
+
+	* include/hal_intr.h: Do not define WATCHDOG() macro.
+
+	* src/hal_intr.c (hal_default_isr): Do not mess with the watchdog
+	in the the default interrupt handler.
+
+	* src/hal_boot.c (hal_zero_bss): use an efficient 8-byte zero.
+	(hal_copy_data): use an efficient 8-byte copy.
+	(cyg_hal_start): turn off the ERC32 watchdog timer before we start
+	anything very time consuming.
+
+	NB: the 8-byte copy changes require alignment in the linker
+	script: see the Changelog in hal/sparclite/sim/... for details.
+
+1999-01-19  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	Modified files in arch:
+	* include/hal_arch.h
+	* include/hal_intr.h
+	* src/PKGconf.mak
+	* src/context.S
+	* src/hal_intr.c
+	* src/vec_ivsr.S
+	* src/vec_xvsr.S
+	* src/vectors.S
+
+	New files in arch:
+	* src/hal_boot.c	(bss initialization, constructors &c)
+	* include/hal_cache.h	(empty but required header)
+
+	Modified files in sim:
+	* include/hal_diag.h
+
+	Lots more progress; essentially, everything now works.
+
+	Simulator's treatment of stdio is poor though, it doesn't work
+	under pkgtest.  This has been slowing me up.
+
+1999-01-14  Hugo Tyson  <hmt@cygnus.co.uk>
+
+	* ecc/ecc/hal/sparclite/...:
+
+	Initial checkin of SPARClite HAL; it doesn't work yet, except the
+	most trivial of tests - timer and interrupt manipulation stuff is
+	entirely absent.
+
+	Here's some documentation of the initial checkin tree; this will
+	change, as platform dependent stuff moves correctly into the sim
+	or <board> directories.
+
+	arch/current/include:
+		basetype.h	nothing much here.
+		vectors.h	definitions of symbols shared between the
+			various vector code assembler files, can be
+			included in both C and assembler.
+		hal_intr.h	various macros for clock and interrupt
+			control plus the eCos vector numbering scheme; we
+			map thus:
+			what	SPARC trap type	    eCos vector numbers
+			-----------------------------------------------
+			(not used)   ---                0	
+			interrupts (17-31)		1-15
+			user traps (128-255)		16
+			exceptions (1-9,36==4)		17-25
+			others	   (10,?)		26
+			-----------------------------------------------
+			Trap types 5 and 6 which would be eCos vectors 21
+			and 22 are handled in the trampoline code in
+			file src/vectors.S
+		hal_arch.h	definition of a thread context, plus
+			macros for thread switching and the like.  Some
+			ancillary bit twiddling macros and cache barriers
+			too.
+
+	arch/current/include/pkgconf:
+		hal_sparclite.h 	pkgconf config/header file.
+	
+	arch/current/src:
+		vectors.S	boot-up stuff, trampoline code that hangs
+			on the interrupt/trap vector, handlers for window
+			under/overflow.  Saves some state in registers
+			then jumps to the interrupt or exception VSR
+	   		respectively.
+			Also instantiates the VSR table.
+		vec_ivsr.S	the default interrupt VSR; it establishes
+			a C calling environment (ie. anticipates a window
+			overflow) then locks the scheduler, calls the ISR
+			with appropriate arguments, and then interrupt_end()
+			before undoing that environment, anticipating
+			window underflow and returning to the interrupted
+			instruction.
+		vec_xvsr.S	the default exception AKA trap VSR; does
+			the same as the interrupt one but without the
+			scheduler lock or interrupt end.
+		hal_intr.c	instantiates the ISR table used by the
+			code above.
+		context.S	context switch code, saves and loads up a
+			whole register state, coroutine or longjump-like.
+		icontext.c	initializes a context to "jump" to in
+			context.S at the birth of a new thread.
+
+	sim/current/include:
+		hal_diag.h	macros to deal with debugging output via a
+			fake serial device of some kind; initially empty,
+			but definitely board/sim dependent.
+
+	sim/current/include/pkgconf:
+		hal_sparclite_sim.h 	pkgconf config/header file.
+
+	sim/current/src:
+		sim.ld		linker script bits for "sim" target.
+
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//
+// -------------------------------------------
+// The contents of this file are subject to the Cygnus eCos Public License
+// Version 1.0 (the "License"); you may not use this file except in
+// compliance with the License.  You may obtain a copy of the License at
+// http://sourceware.cygnus.com/ecos
+// 
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+// License for the specific language governing rights and limitations under
+// the License.
+// 
+// The Original Code is eCos - Embedded Cygnus Operating System, released
+// September 30, 1998.
+// 
+// The Initial Developer of the Original Code is Cygnus.  Portions created
+// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
+// -------------------------------------------
+//
+//####COPYRIGHTEND####
+//===========================================================================
+
+//EOF ChangeLog