Commit graph

45 commits

Author SHA1 Message Date
Hans-Peter Nilsson
c10b360549 * cris/sim-if.c: Include errno.h.
(cris_start_address, cris_program_offset): New variables.
	(OPTION_CRIS_PROGRAM_OFFSET, OPTION_CRIS_STARTADDR): New option
	enums.
	(cris_options): New options --cris-program-offset and
	--cris-start-address.
	(cris_option_handler): Handle new options.
	(cris_program_offset_write, cris_set_section_offset_iterator)
	(cris_offset_sections, cris_offset_sections): New functions.
	(sim_load): Use cris_program_offset_write as function argument to
	cris_load_elf_file, not sim_write.
	(struct offsetinfo): New struct.
	(cris_handle_interpreter): Fix typo in comment.
	(sim_open): Call cris_offset_sections as soon as the bfd of the
	infile is available.  Gate bfd validity checks on abfd non-NULL.
	(sim_create_inferior): Let cris_start_address when != -1 override
	other start-address choices.
2009-01-18 22:17:03 +00:00
Joel Brobecker
e4d013fc0f Update the copyright notice of some of the files I missed
in the previous copyright update.
2009-01-14 10:53:10 +00:00
Hans-Peter Nilsson
fc887f09c5 * cris/traps.c (abort): Define to call sim_io_error.
(create_map): Make -1 imply a non-fixed address, not 0.  All
	callers changed.  Only prefer the next higher unmapped address if
	the last mapped address is no less than 0x40000000.  Check that
	the address to be mapped is not already mapped.  Update head
	comment.
	(unmap_pages): Don't call abort when recursive call fails, just
	note and return an error if a page in the range couldn't be unmapped.
	(cris_bmod_handler, h_supr_set_handler, h_supr_get_handler)
	(schedule, make_first_thread, cris_pipe_empty): New local variable sd.
	(cris_break_13_handler) <case TARGET_SYS_mmap2>: Handle
	non-MAP_FIXED argument overlapping existing map.  For MAP_FIXED,
	don't abort on page not being mapped.  Handle non-anon filemap
	with length padded to pagesize.
2009-01-06 20:49:00 +00:00
Hans-Peter Nilsson
a3d4b83b60 * cris/sim-if.c (TARGET_AT_NULL, TARGET_AT_PHDR, TARGET_AT_PHENT)
(TARGET_AT_PHNUM, TARGET_AT_PAGESZ, TARGET_AT_BASE)
	(TARGET_AT_FLAGS, TARGET_AT_ENTRY, TARGET_AT_UID, TARGET_AT_EUID)
	(TARGET_AT_GID, TARGET_AT_EGID, TARGET_AT_HWCAP)
	(TARGET_AT_CLKTCK): Remove redundant macros.
	(AUX_ENT): Adjust to use standard ELF AT_* macros.
	(AUX_ENTF): Ditto.  Remove always-0 middle argument.  Update all
	callers.
	(sim_open): Also pass AT_SECURE.
2009-01-03 21:25:42 +00:00
Hans-Peter Nilsson
ddf2c97233 * cris/sim-main.h (struct _sim_cpu): New member
set_target_thread_data.
	* cris/crisv32f.c (CRIS_TLS_REGISTER): Define.
	* cris/crisv10f.c: Ditto.
	* cris/cris-tmpl.c (MY (set_target_thread_data)): New function.
	(MY (f_specific_init)): Set new _sim_cpu member to new function.
	* cris/traps.c (TARGET_SYS_set_thread_area): Define.
	(cris_break_13_handler) <case TARGET_SYS_set_thread_area>: New
	case.
2009-01-03 21:00:48 +00:00
Hans-Peter Nilsson
e56b67eda7 * cris/traps.c (TARGET_SYS_exit_group): Define.
(cris_break_13_handler): Handle it like the exit for the last
	thread.
2009-01-03 20:25:48 +00:00
Hans-Peter Nilsson
ffc67e7a94 * cris/traps.c (TARGET_UTSNAME): Update to 2009-01-01.
(TARGET_EPOCH): Update to match TARGET_UTSNAME.  Correct comment.
	(cris_break_13_handler) <case TARGET_SYS_uname>: Update to
	2.6.27.  Set machine field to the BFD printable name of the
	machine.
2009-01-03 19:58:11 +00:00
Hans-Peter Nilsson
a349c9b6a2 * cris/traps.c (TARGET_MAP_DENYWRITE): Define.
<case TARGET_SYS_mmap2>: Handle TARGET_MAP_DENYWRITE.
2009-01-03 19:21:42 +00:00
Hans-Peter Nilsson
e7fcaaa45e * cris/traps.c (TARGET_SYS_access, TARGET_R_OK, TARGET_W_OK)
(TARGET_X_OK, TARGET_F_OK): Define.
	(cris_break_13_handler) <case TARGET_SYS_access>: New case.
2009-01-03 18:37:31 +00:00
Hans-Peter Nilsson
08af5ba82d * cris/semcrisv32f-switch.c: Regenerate. 2009-01-03 17:51:47 +00:00
Hans-Peter Nilsson
a095635839 * cris/sim-if.c (sim_open): If sim_analyze_program fails, emit
just a short CRIS-specific notice.  Tweak the wording for a
	failing architecture test.
2008-12-30 18:52:44 +00:00
Hans-Peter Nilsson
c06ccdf1b6 * cris/traps.c (TARGET_SYS_writev): New macro.
(is_mapped_only, cris_dump_map): New functions.
	(cris_break_13_handler) <case TARGET_SYS_mmap2>: Handle more flags
	and prot combinations and a non-zero page-offset.  If
	TARGET_MAP_FIXED, unmap pages before mapping them.
	<case TARGET_SYS_mprotect>: When checking, allow any length
	argument.  Don't actually do anything.
	<case TARGET_SYS_writev>: New case.
2008-12-30 13:36:17 +00:00
Hans-Peter Nilsson
80e5c09e9d * cris/Makefile.in (SIM_OBJS): Remove sim-hload.o.
* cris/sim-if.c: Include elf-bfd.h.
	(struct progbounds): New members end_loadmem, start_nonloadmem.
	(xprintf, eprintf): New functions, copied from common/sim-load.c.
	(cris_load_elf_file, sim_load, cris_get_progbounds): New functions.
	(get_progbounds_iterator): Renamed from get_progbounds.  Make
	static.  Update head comment.  Set new struct progbounds members.
	(exec_load_addr, interp_load_addr, interp_start_addr): New static
	variables.
	(aux_ent_phdr, aux_ent_phent, aux_ent_phnum, aux_ent_base)
	(aux_ent_entry, cris_write_interp, cris_handle_interpreter): New
	functions.
	(sim_open): New constant array auxv_entries.  Rewrite AUX_ENT
	handling to use auxv_entries.  Improve error message and checking
	for invalid programs.  Use new variable abfd for the program
	instead of for each access reaching into sd to get it.
	(sim_create_inferior): If non-zero, use interp_start_addr instead
	of the program start address.
	(cris_disassemble_insn): Remove incorrect and unclear, supposedly
	stale comment.  Always specify little-endian.
2008-12-30 13:10:35 +00:00
Nick Clifton
086c6838fa * common/genmloop.sh: Add new parameter: -shell to specify the
command interpreter to use to run the input file.  This is
        necessary because otherwise SHELL is taken from the user's
        environment, and not from the makefile that invoked this script
        and the user might not be running an sh-like shell.
        * cris/Makefile.in: Pass -shell parameter to genmloop.sh.
        * fr30/Makefile.in: Likewise.
        * frv/Makefile.in: Likewise.
        * i960/Makefile.in: Likewise.
        * iq2000/Makefile.in: Likewise.
        * m32r/Makefile.in: Likewise.

        * frv/mloop.in: Add missing start of line comment marker.
2008-07-29 13:53:02 +00:00
Hans-Peter Nilsson
8929c18caa * cris/configure: Regenerate to track ../common/common.m4 changes.
* cris/config.in: Ditto.
2008-07-11 02:32:33 +00:00
Joseph Myers
6efef468be sim:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* cris/configure: Regenerate.

sim/common:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* aclocal.m4: Include ../../config/acx.m4.
	* common.m4: Use ACX_PKGVERSION and ACX_BUGURL.
	* configure, config.in: Regenerate.
	* Make-common.in (LIB_OBJS): Add version.o.
	(version.c, version.o): New rules.
	* run.c: Include version.h.
	(usage): Add help parameter. Print output either to stdout or
	stderr depending on that parameter.
	(print_version): New.
	(main): Check for --help and --version.
	* run-sim.h (sim_target_display_usage): Add help parameter.
	* version.h: New.

sim/arm:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.
	* wrapper.c (sim_target_display_usage): Add help parameter.

sim/cr16:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.

sim/d10v:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.

sim/erc32:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.

sim/frv:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.

sim/h8300:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.

sim/iq2000:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.

sim/m32c:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.

sim/m32r:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.

sim/m68hc11:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.

sim/mcore:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.

sim/mips:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.

sim/mn10300:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.

sim/ppc:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure.ac: Use ACX_PKGVERSION and ACX_BUGURL.
	* configure, config.in: Regenerated.
	* Makefile.in (LIB_OBJ): Add version.o.
	(version.c, version.o): New rules.
	* psim.c (psim_usage): Add help parameter.  Print the bug URL.
	Exit with code 0 for help.
	(psim_options): Update calls to psim_usage.  Handle --help and
	--version.
	* psim.h (psim_usage): Update prototype.
	* main.c (main): Update psim_usage call.

sim/sh:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.

sim/sh64:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.

sim/v850:
2008-06-06  Vladimir Prus  <vladimir@codesourcery.com>
            Daniel Jacobowitz  <dan@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

	* configure: Regenerate.
2008-06-07 01:31:27 +00:00
Daniel Jacobowitz
9b254dd1ce Updated copyright notices for most files. 2008-01-01 22:53:26 +00:00
Hans-Peter Nilsson
c9b3544ace * cris/arch.c, cris/arch.h, cris/cpuall.h, cris/cpuv10.c,
cris/cpuv10.h, cris/cpuv32.c, cris/cpuv32.h, cris/cris-desc.c,
	cris/cris-desc.h, cris/cris-opc.h, cris/decodev10.c,
	cris/decodev10.h, cris/decodev32.c, cris/decodev32.h,
	cris/modelv10.c, cris/modelv32.c, cris/semcrisv10f-switch.c,
	cris/semcrisv32f-switch.c: Regenerate.
2007-10-22 16:06:38 +00:00
Joel Brobecker
4744ac1bb0 Switch the license of all files explicitly copyright the FSF
to GPLv3.
2007-08-24 14:30:15 +00:00
Hans-Peter Nilsson
6a4669ea53 * cris/traps.c (dump_statistics): Change format for cycle numbers
to %llu and cast parameters to unsigned long long.
2007-02-20 00:14:11 +00:00
Daniel Jacobowitz
6aba47ca06 Copyright updates for 2007. 2007-01-09 17:59:20 +00:00
Hans-Peter Nilsson
466b1d3308 * cris/cris-sim.h (enum cris_unknown_syscall_action_type)
(cris_unknown_syscall_action): Declare.
	* cris/sim-if.c (cris_unknown_syscall_action): Define.
	(cris_options): Add cris-unknown-syscall option.
	(cris_option_handler): Correct comment about and error message for
	invalid --cris-cycles argument.  Handle --cris-unknown-syscall.
	* cris/traps.c: Include stdarg.h
	(cris_unknown_syscall): New function.
	(cris_break_13_handler): Instead of sim_io_eprintf and
	sim_engine_halt, call cris_unknown_syscall to handle more or less
	unknown syscalls.  Adjust code as necessary to handle return
	value.
2006-10-02 03:21:28 +00:00
Hans-Peter Nilsson
eccd787e25 * cris/traps.c (TARGET_PIPE_BUF): New macro.
(cris_pipe_empty): Correct initialization of "remaining".  Only
	adjust the "write" return value if more than TARGET_PIPE_BUF bytes
	are written.
2006-09-30 02:38:06 +00:00
Hans-Peter Nilsson
3ca4d560ef * cris/configure.ac: Check for limits.h and sys/param.h.
* cris/configure, cris/config.in: Rebuild.
	* cris/traps.c (SIM_PATHMAX): New macro.
	(cris_break_13_handler): Use SIM_PATHMAX, not MAXPATHLEN.
2006-09-29 02:45:48 +00:00
Richard Earnshaw
e85e320515 * common/aclocal.m4: Pass ../../intl to ZW_GNU_GETTEXT_SISTER_DIR.
* common/common.m4: Likewise.
	* */configure: Regenerate.
2006-06-13 08:06:50 +00:00
Daniel Jacobowitz
2f0122dcdf common/
* aclocal.m4: Use ZW_GNU_GETTEXT_SISTER_DIR.
most subdirs/
	* configure: Regenerated.
2006-06-05 14:21:13 +00:00
Daniel Jacobowitz
20e95c23ab Configury changes: update src repository (binutils, gdb, and rda) to use
config/gettext-sister.m4 instead of the old gettext.m4.  Regenerate all
affected autotools files.  Include intl in gdb releases again.
2006-05-31 15:14:46 +00:00
Hans-Peter Nilsson
5cf3f6e292 * cris/crisv32f.c (MY (deliver_interrupt)): Set CCS to new_ccs. 2006-04-08 17:37:56 +00:00
Hans-Peter Nilsson
aad3b3cbc1 * cris/dv-cris.c, cris/dv-rv.c, cris/rvdummy.c: New files.
* cris/Makefile.in (CONFIG_DEVICES): Remove redundant setting.
	(dv-cris.o, dv-rv.o rvdummy$(EXEEXT), rvdummy.o): New rules.
	(all): Depend on rvdummy$(EXEEXT).
	* cris/configure.ac: Call SIM_AC_OPTION_WARNINGS.  Check for
	sys/socket.h and sys/select.h.  Call SIM_AC_OPTION_HARDWARE,
	default off.
	* cris/configure: Regenerate.
	* cris/cris-sim.h (cris_have_900000xxif): Declare here.
	(enum cris_interrupt_type, crisv10deliver_interrupt)
	(crisv32deliver_interrupt: New declarations.
	* cris/cris-tmpl.c [WITH_HW] (MY (f_model_insn_after)): Call
	sim_events_tickn and set state-events member work_pending when it's
	time for the next event.
	[WITH_HW] (MY (f_specific_init)): Set CPU-model-specific
	interrupt-delivery function.
	* cris/crisv10f.c (MY (deliver_interrupt)): New function.
	* cris/crisv32f.c (MY (deliver_interrupt)): New function.
	* cris/devices.c: Include hw-device.h.
	(device_io_read_buffer) [WITH_HW]: Call hw_io_read_buffer.
	(device_io_write_buffer): Only perform 0x900000xx-functions if
	cris_have_900000xxif is nonzero.  Else if WITH_HW defined,
	call hw_io_write_buffer.  Add return 0 last in function.
	* cris/sim-if.c (cris_have_900000xxif): Now global.
	(sim_open) [WITH_HW]: Clear deliver_interrupt cpu member.
	Force "-model" option, effectively.
	* cris/sim-main.h (cris_interrupt_delivery_fn): New type.
	(struct _sim_cpu) [WITH_HW]: New member deliver_interrupt.
2006-04-03 03:01:45 +00:00
Hans-Peter Nilsson
530d581366 * cris/Makefile.in (CRISV10F_OBJS): Remove semcrisv10f-switch.o.
(CRISV32F_OBJS): Remove semcrisv32f-switch.o.
	(semcrisv10f-switch.o, semcrisv32f-switch.o: Remove dependency rules.
2006-04-02 12:46:42 +00:00
Hans-Peter Nilsson
d022998de5 * cris/traps.c (syscall_map): Remove CB_SYS_time / TARGET_SYS_time
mapping.
	(cris_break_13_handler) <case TARGET_SYS_time>: New case.
2006-02-23 02:01:51 +00:00
Hans-Peter Nilsson
8d516ebcaa Update Copyright years 2006-01-10 07:06:25 +00:00
Hans-Peter Nilsson
4fc9958a54 * cris/cris-tmpl.c (MY (f_model_insn_before)): Only display basic
cycle count for the current insn.
2006-01-10 07:05:44 +00:00
Hans-Peter Nilsson
392753ae2f * cris/cpuv10.h, cris/cpuv32.h, cris/cris-desc.c, cris/cris-opc.h,
cris/decodev10.c, cris/decodev10.h, cris/decodev32.c,
	cris/decodev32.h, cris/modelv10.c, cris/modelv32.c,
	cris/semcrisv10f-switch.c, cris/semcrisv32f-switch.c: Regenerate.
2005-12-06 22:42:43 +00:00
Hans-Peter Nilsson
cf2bf87e21 * cris/arch.c, cris/arch.h, cris/cpuall.h, cris/cpuv10.c,
cris/cpuv10.h, cris/cpuv32.c, cris/cpuv32.h, cris/cris-desc.c,
	cris/cris-desc.h, cris/cris-opc.h, cris/decodev10.c,
	cris/decodev10.h, cris/decodev32.c, cris/decodev32.h,
	cris/modelv10.c, cris/modelv32.c, cris/semcrisv10f-switch.c,
	cris/semcrisv32f-switch.c: Regenerate.
2005-12-05 03:11:47 +00:00
Hans-Peter Nilsson
8b9b39f44a cris/traps.c (TARGET_O_RDONLY, TARGET_O_WRONLY): Define.
(open_map): Use TARGET_O_ACCMODE, TARGET_O_RDONLY and
	TARGET_O_WRONLY.
	(cris_break_13_handler) <case TARGET_SYS_fcntl>: Add support for
	F_GETFL on fd 0, 1 and 2.
2005-11-20 14:52:36 +00:00
Hans-Peter Nilsson
ed1f044ac6 * cris/sim-main.h (struct _sim_cpu): New members last_syscall,
last_open_fd, last_open_flags.
	* cris/traps.c: Don't include targ-vals.h.
	(TARGET_O_ACCMODE): Define.
	(cris_break_13_handler): Set new _sim_cpu members.
	<case TARGET_SYS_fcntl>: Support special case of F_GETFL.
	Rearrange code as switch.  Emit "unimplemented" abort for
	unimplemented fcntl calls.
2005-11-17 16:14:53 +00:00
Hans-Peter Nilsson
5457266c93 * cris/traps.c (TARGET_SYS_stat): Define.
(syscall_stat32_map): Add entry for TARGET_SYS_stat.
	(cris_break_13_handler) <case TARGET_SYS_stat>: New case.
2005-11-17 15:51:24 +00:00
Hans-Peter Nilsson
ae81c23549 * cris/cris-tmpl.c (MY (f_model_insn_before)): Make sure only the
low 32 bits are used after an unsigned long cast.
2005-11-16 04:50:57 +00:00
Hans-Peter Nilsson
c318251408 * cris/Makefile.in (stamp-v32fmloop): Depend on stamp-v10fmloop. 2005-05-28 08:47:30 +00:00
Hans-Peter Nilsson
69308976e8 * cris/traps.c (cris_break_13_handler) <case TARGET_SYS_mmap2>:
For ((len & 8191) != 0 && fd == (USI) -1), don't say this isn't
	implemented.  In call to create_map, pad length argument to 8k.
2005-04-18 03:08:46 +00:00
Hans-Peter Nilsson
cce0efb55e * cris/Makefile.in (stamp-v10fcpu, stamp-v32fcpu): Add kludge to
include cgen-ops.h in decodev10.c and decodev32.c.
	* cris/sim-main.h: Don't include cgen-ops.h here.
	* cris/arch.c, cris/arch.h, cris/cpuall.h, cris/cpuv10.c,
	cris/cpuv10.h, cris/cpuv32.c, cris/cpuv32.h, cris/cris-desc.c,
	cris/cris-desc.h, cris/cris-opc.h, cris/decodev10.c,
	cris/decodev10.h, cris/decodev32.c, cris/decodev32.h,
	cris/modelv10.c, cris/modelv32.c, cris/semcrisv10f-switch.c,
	cris/semcrisv32f-switch.c: Regenerate.
2005-03-24 06:12:42 +00:00
Hans-Peter Nilsson
2ecb839027 * cris/traps.c (cris_break_13_handler) <case
TARGET_SYS_rt_sigaction>: Rename sa_handler, sa_flags,
	sa_restorer, sa_mask_low, sa_mask_high to target_sa_handler etc.
2005-03-24 01:14:09 +00:00
Mark Kettenis
2b193c4ab6 From common/ChangeLog:
* aclocal.m4 Include ../../gettext.m4.
(CY_WITH_NLS, CY_GNU_GETTEXT, AM_PATH_PROG_WITH_TEST)
(AM_LC_MESSAGES): Remove.
* configure: Regenerate.

Regenerate all other configures.
2005-03-23 18:55:19 +00:00
Hans-Peter Nilsson
f6bcefefe8 * cris: New directory, simulator for Axis Communications CRIS
including CRIS v32, CGEN-based.
	* configure.ac: Add corresponding configury.
	* configure: Regenerate.
2005-01-28 04:29:00 +00:00