Compare commits

..

1 Commits
4.9.4 ... 4.9.0

Author SHA1 Message Date
cvs2git
364e64d2a0 This commit was manufactured by cvs2svn to create tag 'rtems-4-9-0'.
Sprout from rtems-4-9-branch 2008-09-24 17:16:13 UTC Joel Sherrill <joel.sherrill@OARcorp.com> '2008-09-24	Joel Sherrill <joel.sherrill@OARcorp.com>'
Cherrypick from rtems-4-9-branch 2009-09-15 05:32:51 UTC cvs2git <rtems-devel@rtems.org> 'This commit was manufactured by cvs2svn to create branch 'rtems-4-9-branch'.':
    c/src/lib/libbsp/arm/smdk2410/include/.cvsignore
    c/src/lib/libbsp/m68k/genmcf548x/include/.cvsignore
    c/src/lib/libbsp/m68k/mcf52235/include/.cvsignore
    c/src/lib/libbsp/m68k/mcf5329/include/.cvsignore
    c/src/lib/libbsp/powerpc/mvme3100/include/.cvsignore
    c/src/lib/libbsp/powerpc/virtex/include/.cvsignore
2009-09-15 05:32:52 +00:00
710 changed files with 10254 additions and 84938 deletions

View File

@@ -1,8 +1,3 @@
2008-10-01 Ralf Corsépius <ralf.corsepius@rtems.org>
PR 1324/bsps
* aclocal/check-bsps.m4: Adopt icecube changes from CVS-HEAD.
2008-09-24 Joel Sherrill <joel.sherrill@OARcorp.com>
* Makefile.maint: Bump rtems_api to 4.9.

View File

@@ -4,4 +4,4 @@
# $Id$
#
RTEMS Version 4.9.4
RTEMS Version 4.9.0

View File

@@ -26,9 +26,9 @@ AC_MSG_CHECKING([for available BSPs])
bsps="$bsps mbx860_002"
bsps="$bsps mbx860_005b"
;;
gen5200) bsps="pm520_cr825 pm520_ze30 brs5l icecube";;
gen5200) bsps="pm520_cr825 pm520_ze30 brs5l";;
mpc55xxevb) bsps="mpc5566evb";;
gen83xx) bsps="mpc8349eamds hsc_cm01 mpc8313erdb";;
gen83xx) bsps="mpc8349eamds hsc_cm01 mpc8313erdb icecube";;
motorola_powerpc) bsps="mvme2307 mcp750 mtx603e mvme2100";;
pc386) bsps="pc386 pc386dx pc486 pc586 pc686 pck6";;
erc32) bsps="erc32 sis";;

View File

@@ -1,4 +1,4 @@
AC_DEFUN([RTEMS_VERSIONING],
m4_define([_RTEMS_VERSION],[4.9.4]))
m4_define([_RTEMS_VERSION],[4.9.0]))
m4_define([RTEMS_API],[4.9])

View File

@@ -1,19 +1,3 @@
2009-03-12 Daniel Hellstrom <daniel@gaisler.com>
PR 1392/bsps
* libchip/i2c/spi-memdrv.c: SPI Memory driver. Fix but where writes
over multiple pages results in extra data being written.
2009-01-21 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libchip/i2c/spi-sd-card.c: Fixed RTEMS_BLKDEV_CAPABILITIES ioctl
which caused invalid multiple block writes.
2008-11-13 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libchip/serial/ns16550.c: Transmit the character in the polled write
function within a critical section for printk() compatibility.
2008-09-10 Ralf Corsépius <ralf.corsepius@rtems.org>
* aclocal/prog-cc.m4: Remove pre-production testing CFLAGS.

View File

@@ -1,4 +1,4 @@
AC_DEFUN([RTEMS_VERSIONING],
m4_define([_RTEMS_VERSION],[4.9.4]))
m4_define([_RTEMS_VERSION],[4.9.0]))
m4_define([RTEMS_API],[4.9])

View File

@@ -1,23 +1,3 @@
2008-09-29 Joel Sherrill <joel.sherrill@oarcorp.com>
* support/timer_driver.adb, support/timer_driver.ads,
tmtests/tm01/tmtest.adb, tmtests/tm02/tmtest.adb,
tmtests/tm03/tmtest.adb, tmtests/tm04/tmtest.adb,
tmtests/tm05/tmtest.adb, tmtests/tm06/tmtest.adb,
tmtests/tm07/tmtest.adb, tmtests/tm08/tmtest.adb,
tmtests/tm09/tmtest.adb, tmtests/tm10/tmtest.adb,
tmtests/tm11/tmtest.adb, tmtests/tm12/tmtest.adb,
tmtests/tm13/tmtest.adb, tmtests/tm14/tmtest.adb,
tmtests/tm15/tmtest.adb, tmtests/tm16/tmtest.adb,
tmtests/tm17/tmtest.adb, tmtests/tm18/tmtest.adb,
tmtests/tm19/tmtest.adb, tmtests/tm20/config.h,
tmtests/tm20/tmtest.adb, tmtests/tm21/tmtest.adb,
tmtests/tm22/tmtest.adb, tmtests/tm23/tmtest.adb,
tmtests/tm24/tmtest.adb, tmtests/tm25/tmtest.adb,
tmtests/tm28/tmtest.adb, tmtests/tm29/tmtest.adb,
tmtests/tmck/tmtest.adb, tmtests/tmoverhd/tmtest.adb: Clean up.
Verified to run on psim with gcc 4.3.2.
2008-06-06 Joel Sherrill <joel.sherrill@oarcorp.com>
* samples/hello/config.h, sptests/spname01/config.h: These needed

View File

@@ -20,21 +20,9 @@
--
with RTEMS;
with Interfaces.C;
package body Timer_Driver is
--PAGE
--
-- Empty_function
--
--
procedure Empty_Function
is
begin
Null;
end Empty_Function;
--PAGE
--
-- Set_Find_Average_Overhead
@@ -45,18 +33,12 @@ package body Timer_Driver is
Find_Flag : in Standard.Boolean
) is
procedure Set_Find_Average_Overhead_base (
Find_Flag : in Interfaces.Unsigned_8
Find_Flag : in RTEMS.Boolean
);
pragma Import (C, Set_Find_Average_Overhead_base,
"benchmark_timer_disable_subtracting_average_overhead");
c: Interfaces.Unsigned_8;
"Set_find_average_overhead");
begin
if Find_Flag then
c := 1;
else
c := 0;
end if;
Set_Find_Average_Overhead_base (c);
Set_Find_Average_Overhead_base (RTEMS.From_Ada_Boolean (Find_Flag));
end Set_Find_Average_Overhead;
end Timer_Driver;

View File

@@ -32,7 +32,7 @@ package Timer_Driver is
--
procedure Initialize;
pragma Import (C, Initialize, "benchmark_timer_initialize");
pragma Import (C, Initialize, "Timer_initialize");
--
-- Read_Timer
@@ -46,7 +46,7 @@ package Timer_Driver is
function Read_Timer
return RTEMS.Unsigned32;
pragma Import (C, Read_Timer, "benchmark_timer_read");
pragma Import (C, Read_Timer, "Read_timer");
--
-- Empty_Function
@@ -60,6 +60,7 @@ package Timer_Driver is
--
procedure Empty_Function;
pragma Import (C, Empty_Function, "Empty_function");
--
-- Set_Find_Average_Overhead

View File

@@ -266,8 +266,6 @@ package body TMTEST is
SEMAPHORE_RELEASE_LOOP_TIME * 2,
RTEMS_CALLING_OVERHEAD.SEMAPHORE_RELEASE
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 1 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end TASK_1;

View File

@@ -199,7 +199,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.SEMAPHORE_OBTAIN
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 2 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end LOW_TASK;

View File

@@ -179,7 +179,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.SEMAPHORE_RELEASE
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 3 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end HIGH_TASK;

View File

@@ -399,7 +399,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.TASK_DELETE
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 4 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end HIGH_TASK;

View File

@@ -119,7 +119,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.TASK_RESUME
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 5 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end HIGH_TASK;

View File

@@ -185,7 +185,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.TASK_DELETE
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 6 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end TASK_1;

View File

@@ -120,7 +120,6 @@ package body TMTEST is
RTEMS.TASK_SUSPEND( RTEMS.SELF, STATUS );
end if;
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 07 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end HIGH_TASK;

View File

@@ -307,7 +307,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.CLOCK_GET
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 8 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end TEST_TASK;

View File

@@ -109,7 +109,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.MESSAGE_QUEUE_DELETE
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 9 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end TEST_TASK;

View File

@@ -215,7 +215,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.MESSAGE_QUEUE_RECEIVE
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 10 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end LOW_TASK;

View File

@@ -175,7 +175,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.MESSAGE_QUEUE_SEND
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 11 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end HIGH_TASK;

View File

@@ -174,7 +174,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.MESSAGE_QUEUE_SEND
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 12 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end HIGH_TASK;

View File

@@ -173,7 +173,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.MESSAGE_QUEUE_URGENT
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 13 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end HIGH_TASK;

View File

@@ -180,7 +180,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.MESSAGE_QUEUE_URGENT
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 14 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end HIGH_TASK;

View File

@@ -237,7 +237,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.EVENT_SEND
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 15 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end LOW_TASK;

View File

@@ -188,7 +188,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.EVENT_SEND
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 16 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end HIGH_TASK;

View File

@@ -151,7 +151,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.TASK_SET_PRIORITY
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 17 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end LAST_TASK;

View File

@@ -145,7 +145,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.TASK_DELETE
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 18 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end LAST_TASK;

View File

@@ -277,7 +277,6 @@ package body TMTEST is
0
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 19 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end TASK_3;

View File

@@ -22,7 +22,6 @@
#define CONFIGURE_MAXIMUM_PARTITIONS 1
#define CONFIGURE_MAXIMUM_REGIONS 1
#define CONFIGURE_MAXIMUM_TASKS 3
#define CONFIGURE_TICKS_PER_TIMESLICE 0
#define CONFIGURE_POSIX_INIT_THREAD_TABLE

View File

@@ -393,7 +393,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.REGION_DELETE
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 20 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end TASK_1;

View File

@@ -293,7 +293,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.RATE_MONOTONIC_IDENT
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 21 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end TASK_1;

View File

@@ -218,7 +218,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.MESSAGE_QUEUE_BROADCAST
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 22 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end LOW_TASK;

View File

@@ -389,7 +389,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.TASK_WAKE_WHEN
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 23 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end LOW_TASK;

View File

@@ -151,7 +151,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.TASK_WAKE_AFTER
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 24 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end if;

View File

@@ -148,7 +148,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.CLOCK_TICK
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 25 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end LOW_TASK;

View File

@@ -167,7 +167,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.PORT_DELETE
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 28 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end TEST_TASK;

View File

@@ -224,7 +224,6 @@ package body TMTEST is
RTEMS_CALLING_OVERHEAD.RATE_MONOTONIC_PERIOD
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST 29 ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end LOW_TASK;

View File

@@ -152,7 +152,6 @@ TEST_SUPPORT.PAUSE;
0
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST CHECK ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end TASK_1;

View File

@@ -1396,7 +1396,6 @@ TEST_SUPPORT.PAUSE;
0
);
TEXT_IO.PUT_LINE( "*** END OF TIME TEST OVERHEAD ***" );
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
end TASK_1;

View File

@@ -1,14 +1,3 @@
2008-12-03 Joel Sherrill <joel.sherrill@OARcorp.com>
PR 1345/Ada
* rtems.ads: RTEMS boolean type is now C99 bool which is not an
unsigned32.
2008-11-20 Joel Sherrill <joel.sherrill@OARcorp.com>
PR 1339/Ada
* rtems.adb, rtems.ads: Re-add IO Manager to Ada binding.
2008-05-06 Joel Sherrill <joel.sherrill@oarcorp.com>
* rtems.adb, rtems.ads: Fix prototype.

View File

@@ -22,6 +22,7 @@
with Ada;
with Ada.Unchecked_Conversion;
with System;
with Interfaces; use Interfaces;
with Interfaces.C; use Interfaces.C;
with Interfaces.C.Strings; use Interfaces.C.Strings;
@@ -37,7 +38,7 @@ package body RTEMS is
) return RTEMS.Boolean is
begin
if Ada_Boolean then
if Ada_Boolean = Standard.True then
return RTEMS.True;
end if;
@@ -1733,145 +1734,6 @@ package body RTEMS is
end Port_Internal_To_External;
--
-- Input/Output Manager
--
procedure IO_Register_Name (
Name : in String;
Major : in RTEMS.Device_Major_Number;
Minor : in RTEMS.Device_Minor_Number;
Result : out RTEMS.Status_Codes
) is
function IO_Register_Name_Base (
Name : Interfaces.C.Char_Array;
Major : RTEMS.Device_Major_Number;
Minor : RTEMS.Device_Minor_Number
) return RTEMS.Status_Codes;
pragma Import (C, IO_Register_Name_Base, "rtems_io_register_name");
begin
Result :=
IO_Register_Name_Base ( Interfaces.C.To_C (Name), Major, Minor );
end IO_Register_Name;
procedure IO_Lookup_Name (
Name : in String;
Device_Info : out RTEMS.Driver_Name_t;
Result : out RTEMS.Status_Codes
) is
function IO_Lookup_Name_Base (
Name : Interfaces.C.Char_Array;
Device_Info : access RTEMS.Driver_Name_t
) return RTEMS.Status_Codes;
pragma Import (C, IO_Lookup_Name_Base, "rtems_io_lookup_name");
Device_Info_Base : aliased RTEMS.Driver_Name_t;
begin
Result := IO_Lookup_Name_Base (
Interfaces.C.To_C (Name),
Device_Info_Base'Unchecked_Access
);
Device_Info := Device_Info_Base;
end IO_Lookup_Name;
procedure IO_Open (
Major : in RTEMS.Device_Major_Number;
Minor : in RTEMS.Device_Minor_Number;
Argument : in RTEMS.Address;
Result : out RTEMS.Status_Codes
) is
function IO_Open_Base (
Major : RTEMS.Device_Major_Number;
Minor : RTEMS.Device_Minor_Number;
Argument : RTEMS.Address
) return RTEMS.Status_Codes;
pragma Import (C, IO_Open_Base, "rtems_io_open");
begin
Result := IO_Open_Base (Major, Minor, Argument);
end IO_Open;
pragma Inline (IO_Open);
procedure IO_Close (
Major : in RTEMS.Device_Major_Number;
Minor : in RTEMS.Device_Minor_Number;
Argument : in RTEMS.Address;
Result : out RTEMS.Status_Codes
) is
function IO_Close_Base (
Major : RTEMS.Device_Major_Number;
Minor : RTEMS.Device_Minor_Number;
Argument : RTEMS.Address
) return RTEMS.Status_Codes;
pragma Import (C, IO_Close_Base, "rtems_io_close");
begin
Result := IO_Close_Base (Major, Minor, Argument);
end IO_Close;
pragma Inline (IO_Close);
procedure IO_Read (
Major : in RTEMS.Device_Major_Number;
Minor : in RTEMS.Device_Minor_Number;
Argument : in RTEMS.Address;
Result : out RTEMS.Status_Codes
) is
function IO_Read_Base (
Major : RTEMS.Device_Major_Number;
Minor : RTEMS.Device_Minor_Number;
Argument : RTEMS.Address
) return RTEMS.Status_Codes;
pragma Import (C, IO_Read_Base, "rtems_io_read");
begin
Result := IO_Read_Base (Major, Minor, Argument);
end IO_Read;
pragma Inline (IO_Read);
procedure IO_Write (
Major : in RTEMS.Device_Major_Number;
Minor : in RTEMS.Device_Minor_Number;
Argument : in RTEMS.Address;
Result : out RTEMS.Status_Codes
) is
function IO_Write_Base (
Major : RTEMS.Device_Major_Number;
Minor : RTEMS.Device_Minor_Number;
Argument : RTEMS.Address
) return RTEMS.Status_Codes;
pragma Import (C, IO_Write_Base, "rtems_io_write");
begin
Result := IO_Write_Base (Major, Minor, Argument);
end IO_Write;
pragma Inline (IO_Write);
procedure IO_Control (
Major : in RTEMS.Device_Major_Number;
Minor : in RTEMS.Device_Minor_Number;
Argument : in RTEMS.Address;
Result : out RTEMS.Status_Codes
) is
function IO_Control_Base (
Major : RTEMS.Device_Major_Number;
Minor : RTEMS.Device_Minor_Number;
Argument : RTEMS.Address
) return RTEMS.Status_Codes;
pragma Import (C, IO_Control_Base, "rtems_io_control");
begin
Result := IO_Control_Base (Major, Minor, Argument);
end IO_Control;
pragma Inline (IO_Control);
--
-- Fatal Error Manager
@@ -2237,7 +2099,7 @@ package body RTEMS is
Name : chars_ptr
) return RTEMS.Status_Codes;
pragma Import (C, Object_Set_Name_Base, "rtems_object_set_name");
NameAsCString : constant chars_ptr := New_String(Name);
NameAsCString : chars_ptr := New_String(Name);
begin
Result := Object_Set_Name_Base (ID, NameAsCString);
end Object_Set_Name;
@@ -2370,8 +2232,8 @@ package body RTEMS is
API : RTEMS.Unsigned32
) return chars_ptr;
pragma Import (C, Object_Get_API_Name_Base, "rtems_object_get_api_name");
Result : constant chars_ptr := Object_Get_API_Name_Base (API);
APIName : constant String := Value_Without_Exception (Result);
Result : chars_ptr := Object_Get_API_Name_Base (API);
APIName : String := Value_Without_Exception (Result);
begin
Name := APIName;
end Object_Get_API_Name;
@@ -2387,9 +2249,8 @@ package body RTEMS is
) return chars_ptr;
pragma Import
(C, Object_Get_API_Class_Name_Base, "rtems_object_get_api_class_name");
Result : constant
chars_ptr := Object_Get_API_Class_Name_Base (The_API, The_Class);
ClassName : constant String := Value_Without_Exception (Result);
Result : chars_ptr := Object_Get_API_Class_Name_Base (The_API, The_Class);
ClassName : String := Value_Without_Exception (Result);
begin
Name := ClassName;
end Object_Get_API_Class_Name;

View File

@@ -45,7 +45,7 @@ pragma Elaborate_Body (RTEMS);
type Unsigned8_Pointer is access all RTEMS.Unsigned8;
type Signed32_Pointer is access all RTEMS.Signed32;
subtype Boolean is RTEMS.Unsigned8;
subtype Boolean is RTEMS.Unsigned32;
subtype Address is System.Address;
subtype Single is Interfaces.C.C_float;
subtype Double is Interfaces.C.Double;
@@ -58,7 +58,7 @@ pragma Elaborate_Body (RTEMS);
Unsigned8_Bits : constant := 7;
Unsigned16_Bits : constant := 15;
Unsigned32_Bits : constant := 31;
Boolean_Bits : constant := 7;
Boolean_Bits : constant := 31;
Address_Bits : constant := 31;
Single_Bits : constant := 31;
Double_Bits : constant := 63;
@@ -66,7 +66,7 @@ pragma Elaborate_Body (RTEMS);
Unsigned8_Units : constant := 1;
Unsigned16_Units : constant := 2;
Unsigned32_Units : constant := 4;
Boolean_Units : constant := 1;
Boolean_Units : constant := 4;
Address_Units : constant := 4;
Single_Units : constant := 4;
Double_Units : constant := 8;
@@ -99,16 +99,6 @@ pragma Elaborate_Body (RTEMS);
subtype Node is RTEMS.Unsigned32;
type Driver_Name_t is
record
Device_Name : RTEMS.Address;
Device_Name_Length : RTEMS.Unsigned32;
Major : RTEMS.Device_Major_Number;
Minor : RTEMS.Device_Minor_Number;
end record;
--
-- Task Related Types
--
@@ -1171,63 +1161,6 @@ pragma Elaborate_Body (RTEMS);
Result : out RTEMS.Status_Codes
);
--
-- Input/Output Manager
--
procedure IO_Register_Name (
Name : in String;
Major : in RTEMS.Device_Major_Number;
Minor : in RTEMS.Device_Minor_Number;
Result : out RTEMS.Status_Codes
);
procedure IO_Lookup_Name (
Name : in String;
Device_Info : out RTEMS.Driver_Name_t;
Result : out RTEMS.Status_Codes
);
procedure IO_Open (
Major : in RTEMS.Device_Major_Number;
Minor : in RTEMS.Device_Minor_Number;
Argument : in RTEMS.Address;
Result : out RTEMS.Status_Codes
);
pragma Inline (IO_Open);
procedure IO_Close (
Major : in RTEMS.Device_Major_Number;
Minor : in RTEMS.Device_Minor_Number;
Argument : in RTEMS.Address;
Result : out RTEMS.Status_Codes
);
pragma Inline (IO_Close);
procedure IO_Read (
Major : in RTEMS.Device_Major_Number;
Minor : in RTEMS.Device_Minor_Number;
Argument : in RTEMS.Address;
Result : out RTEMS.Status_Codes
);
pragma Inline (IO_Read);
procedure IO_Write (
Major : in RTEMS.Device_Major_Number;
Minor : in RTEMS.Device_Minor_Number;
Argument : in RTEMS.Address;
Result : out RTEMS.Status_Codes
);
pragma Inline (IO_Write);
procedure IO_Control (
Major : in RTEMS.Device_Major_Number;
Minor : in RTEMS.Device_Minor_Number;
Argument : in RTEMS.Address;
Result : out RTEMS.Status_Codes
);
pragma Inline (IO_Control);
--
-- Fatal Error Manager
--

View File

@@ -1,12 +1,3 @@
2009-03-12 Joel Sherrill <joel.sherrill@OARcorp.com>
PR 1385/cpukit
* shared/irq/irq_asm.S: When the type rtems_boolean was switched to the
C99 bool, the size changed from 4 bytes to 1 byte. The interrupt
dispatching code accesses two boolean variables for scheduling
purposes and the assembly implementations of this code did not get
updated.
2008-08-18 Ralf Corsépius <ralf.corsepius@rtems.org>
* shared/irq/irq_init.c: Add missing prototypes.

View File

@@ -1,12 +1,3 @@
2009-01-06 Joel Sherrill <joel.sherrill@OARcorp.com>
PR 1350/bsps
* network/lan91c11x.c: Do not write 65th element into 64 element array.
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
2008-08-21 Joel Sherrill <joel.sherrill@oarcorp.com>
* Makefile.am: No BSP should use exit.c as a file name. exit() is POSIX

View File

@@ -4,10 +4,10 @@
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s}}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dp -Bstatic -N}
%{!qrtems: %(old_link)} %{qrtems: -Qy -dp -Bstatic -N -e _start}
*endfile:
%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }

View File

@@ -224,6 +224,9 @@ void lan91c11x_write_phy_reg(int reg, uint16_t phydata)
mask >>= 1;
}
/* Final clock bit */
bits[clk_idx++] = 0;
/* Turn off all MII Interface bits */
lan91c11x_write_reg(LAN91C11X_MGMT,
lan91c11x_read_reg(LAN91C11X_MGMT) & 0xfff0);

View File

@@ -1,7 +1,3 @@
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
2008-08-21 Joel Sherrill <joel.sherrill@oarcorp.com>
* Makefile.am: No BSP should use exit.c as a file name. exit() is POSIX

View File

@@ -4,10 +4,10 @@
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s}}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dp -Bstatic -N}
%{!qrtems: %(old_link)} %{qrtems: -Qy -dp -Bstatic -N -e _start}
*endfile:
%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }

View File

@@ -1,7 +1,3 @@
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
2008-09-05 Ralf Corsepius <ralf.corsepius@rtems.org>
* timer/timer.c: Use "true" instead of "1" for "bool"s.

View File

@@ -4,10 +4,10 @@
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s}}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dp -Bstatic -N}
%{!qrtems: %(old_link)} %{qrtems: -Qy -dp -Bstatic -N -e _start}
*endfile:
%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }

View File

@@ -1,22 +1,3 @@
2009-03-12 Joel Sherrill <joel.sherrill@OARcorp.com>
PR 1385/cpukit
* irq/irq_asm.S: When the type rtems_boolean was switched to the C99
bool, the size changed from 4 bytes to 1 byte. The interrupt
dispatching code accesses two boolean variables for scheduling
purposes and the assembly implementations of this code did not get
updated.
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
2008-09-30 Ralf Corsépius <ralf.corsepius@rtems.org>
* console/defaultfont.c: Remove (Renamed into console/defaultfont.h).
* console/defaultfont.h: New (Renamed from console/defaultfont.c).
* Makefile.am, console/conio.c: Reflect renamer.
2008-09-24 Ralf Corsepius <ralf.corsepius@rtems.org>
* Makefile.am: Remove empty HAS_NETWORKING conditional.

View File

@@ -43,7 +43,7 @@ startup_SOURCES = ../../shared/bsplibc.c ../../shared/bsppost.c \
../../shared/gnatinstallhandler.c
clock_SOURCES = clock/clockdrv.c
console_SOURCES = console/conio.c console/console.c \
console/defaultfont.h
console/defaultfont.c
timer_SOURCES = timer/timer.c
include_HEADERS += irq/irq.h

View File

@@ -4,10 +4,10 @@
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s}}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -Bstatic -N}
%{!qrtems: %(old_link)} %{qrtems: -Qy -dc -dp -Bstatic -N -e _start}
*endfile:
%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }

View File

@@ -92,7 +92,7 @@ int _textattr; /**< Text attribute */
/*---------------------------------------------------------------------------*
* Defaultfont *
*---------------------------------------------------------------------------*/
#include "defaultfont.h"
#include "defaultfont.c"
/**
* @brief gba_gotoxy function set screeen xy-coordinates

View File

@@ -83,13 +83,13 @@ PUBLIC_ARM_FUNCTION(_ISR_Handler)
/* If a task switch is necessary, call scheduler */
ldr r0, =_Context_Switch_necessary
ldrb r1, [r0]
ldr r1, [r0]
cmp r1, #0
/* since bframe is going to clear _ISR_Signals_to_thread_executing, */
/* we need to load it here */
ldr r0, =_ISR_Signals_to_thread_executing
ldrb r1, [r0]
ldr r1, [r0]
bne bframe
/* If a signals to be sent (_ISR_Signals_to_thread_executing != 0), */
@@ -99,7 +99,7 @@ PUBLIC_ARM_FUNCTION(_ISR_Handler)
/* _ISR_Signals_to_thread_executing = FALSE */
mov r1, #0
strb r1, [r0]
str r1, [r0]
bframe:
/* Now we need to set up the return from this ISR to be _ISR_Dispatch */

View File

@@ -1,11 +1,3 @@
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
2008-09-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Remove noinst_PROGRAMS (Unused).
2008-08-21 Joel Sherrill <joel.sherrill@oarcorp.com>
* Makefile.am: No BSP should use exit.c as a file name. exit() is POSIX

View File

@@ -15,6 +15,7 @@ include_HEADERS += include/tm27.h
nodist_include_HEADERS = include/bspopts.h
DISTCLEANFILES = include/bspopts.h
noinst_PROGRAMS =
nodist_include_HEADERS += ../../shared/include/coverhd.h

View File

@@ -4,10 +4,10 @@
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s}}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e _start}
*endfile:
%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }

View File

@@ -1,7 +1,3 @@
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
2008-09-05 Ralf Corsepius <ralf.corsepius@rtems.org>
* block/block.c, rtc/rtc.c: Convert to "bool".

View File

@@ -4,10 +4,10 @@
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s}}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -Bstatic -N}
%{!qrtems: %(old_link)} %{qrtems: -Qy -dc -dp -Bstatic -N -e _start}
*endfile:
%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }

View File

@@ -1,12 +1,3 @@
2009-03-02 Ray Xu <rayx.cn@gmail.com>
PR 1380/bsps
* include/bsp.h: Switch to English comments.
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
2008-05-14 Joel Sherrill <joel.sherrill@OARcorp.com>
* Makefile.am: Rework to avoid .rel files.

View File

@@ -4,10 +4,10 @@
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s}}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e _start}
*endfile:
%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }

View File

@@ -30,15 +30,12 @@ extern "C" {
/* cclk=cco/(2*P) */
/* cco = cclk*2*P */
/* system clk frequecy,<=60Mhz, defined in system configuration */
#define LPC22xx_Fcclk CONFIG_ARM_CLK
#define LPC22xx_Fcclk CONFIG_ARM_CLK /* system clk frequecy,<=60Mhz, defined in system configuration */
/* Fcco 156M~320Mhz*/
/* system clk frequecy,<=60Mhz, defined in system configuration */
#define LPC22xx_Fcclk CONFIG_ARM_CLK
#define LPC22xx_Fcclk CONFIG_ARM_CLK /* system clk frequecy,<=60Mhz, defined in system configuration */
#define LPC22xx_Fcco LPC22xx_Fcclk * 4
/*VPB clk frequency,1,1/2,1/4 times of Fcclk */
#define LPC22xx_Fpclk (LPC22xx_Fcclk /4) *1
#define LPC22xx_Fpclk (LPC22xx_Fcclk /4) *1 /*VPB clk frequency,1,1/2,1/4 times of Fcclk */
@@ -79,15 +76,14 @@ extern "C" {
/**
* help file
*/
/* System configure, Fosc Fcclk Fcco Fpclk must be defined*/
#define Fosc 11059200 // osc freq,10MHz~25MHz,
// change to real one if needed
#define Fcclk (Fosc << 2) //system freq 2^n time of Fosc(1~32) <=60MHZ
#define Fcco (Fcclk <<2) //CCO freq 2,4,8,16 time of Fcclk 156MHz~320MHz
#define Fpclk (Fcclk >>2) * 1 //VPB freq only(Fcclk / 4) 1~4
#define M Fcclk / Fosc
#define P_min Fcco_MIN / (2*Fcclk) + 1;
#define P_max Fcco_MAX / (2*Fcclk);
/* ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, Fosc<EFBFBD><EFBFBD>Fcclk<EFBFBD><EFBFBD>Fcco<EFBFBD><EFBFBD>Fpclk<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
#define Fosc 11059200 //<2F><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>,10MHz~25MHz<48><7A>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>һ<EFBFBD><D2BB>
#define Fcclk (Fosc << 2) //ϵͳƵ<CDB3>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD>ΪFosc<73><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(1~32)<29><><EFBFBD><EFBFBD><=60MHZ
#define Fcco (Fcclk <<2) //CCOƵ<4F>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD>ΪFcclk<6C><6B>2<EFBFBD><32>4<EFBFBD><34>8<EFBFBD><38>16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΧΪ156MHz~320MHz
#define Fpclk (Fcclk >>2) * 1 //VPBʱ<42><CAB1>Ƶ<EFBFBD>ʣ<EFBFBD>ֻ<EFBFBD><D6BB>Ϊ(Fcclk / 4)<29><>1 ~ 4<><34>
#define M Fcclk / Fosc;
#define P_min Fcco_MIN / (2*Fcclk) + 1;
#define P_max Fcco_MAX / (2*Fcclk);
@@ -110,20 +106,20 @@ extern "C" {
#define SPI_CS_PIN_FUNC PINSEL0_bit.SPI_CS_PIN
// Flash definition
//#define FLASH_SIZE (0x200000-FLASH_BOOT) // Total area of Flash region in words 8 bit
#define FLASH_SIZE (0x80000-FLASH_BOOT) // Total area of Flash region in words 8 bit
//#define FLASH_SIZE (0x80000-FLASH_BOOT) // Total area of Flash region in words 8 bit
#define FLASH_BEGIN 0x80000000
#define FLASH_BASE (FLASH_BEGIN+FLASH_BOOT) //First 0x8000 bytes reserved for boot loader etc.
//#define FLASH_SIZE (0x200000-FLASH_BOOT) // Total area of Flash region in words 8 bit
#define FLASH_SIZE (0x80000-FLASH_BOOT) // Total area of Flash region in words 8 bit
//#define FLASH_SIZE (0x80000-FLASH_BOOT) // Total area of Flash region in words 8 bit
#define FLASH_BEGIN 0x80000000
#define FLASH_BASE (FLASH_BEGIN+FLASH_BOOT) //First 0x8000 bytes reserved for boot loader etc.
// SRAM definition
#define SRAM_SIZE 0x100000 // Total area of Flash region in words 8 bit
#define SRAM_BASE 0x81000000 //First 0x8000 bytes reserved for boot loader etc.
#define SRAM_SIZE 0x100000 // Total area of Flash region in words 8 bit
#define SRAM_BASE 0x81000000 //First 0x8000 bytes reserved for boot loader etc.
// CS8900A definition
#define CS8900A_BASE 0x82000000
#define CS8900A_BASE 0x82000000 //
// RTL8019AS definition
#define RTL8019AS_BASE 0x82000000
#define RTL8019AS_BASE 0x82000000 //
struct rtems_bsdnet_ifconfig;
int cs8900_driver_attach (struct rtems_bsdnet_ifconfig *config,

View File

@@ -79,13 +79,13 @@ _ISR_Handler:
/* If a task switch is necessary, call scheduler */
ldr r0, =_Context_Switch_necessary
ldrb r1, [r0]
ldr r1, [r0]
cmp r1, #0
/* since bframe is going to clear _ISR_Signals_to_thread_executing, */
/* we need to load it here */
ldr r0, =_ISR_Signals_to_thread_executing
ldrb r1, [r0]
ldr r1, [r0]
bne bframe
/* If a signals to be sent (_ISR_Signals_to_thread_executing != 0), */
@@ -95,7 +95,7 @@ _ISR_Handler:
/* _ISR_Signals_to_thread_executing = FALSE */
mov r1, #0
strb r1, [r0]
str r1, [r0]
bframe:

View File

@@ -1,11 +1,3 @@
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
2008-09-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Remove noinst_PROGRAMS (Unused).
2008-09-24 Ralf Corsépius <ralf.corsepius@rtems.org>
PR 1322/bsps

View File

@@ -15,6 +15,7 @@ include_HEADERS += ../../shared/include/tm27.h
nodist_include_HEADERS = include/bspopts.h
DISTCLEANFILES = include/bspopts.h
noinst_PROGRAMS =
nodist_include_HEADERS += ../../shared/include/coverhd.h
EXTRA_DIST = ../gp32/start/start.S

View File

@@ -4,10 +4,10 @@
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s}}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e _start}
*endfile:
%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }

View File

@@ -1,7 +1,3 @@
2008-09-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Cleanup.
2007-12-11 Joel Sherrill <joel.sherrill@OARcorp.com>
* include/bsp.h: Eliminate copies of the Configuration Table. Use the

View File

@@ -14,9 +14,46 @@ include_HEADERS += include/tm27.h
nodist_include_HEADERS = include/bspopts.h
DISTCLEANFILES = include/bspopts.h
nodist_include_HEADERS += ../shared/include/coverhd.h
nodist_include_HEADERS += $(top_srcdir)/../shared/include/coverhd.h
all-local: $(PREINSTALL_FILES)
EXTRA_DIST = build-tools do-bare-bsp-build
include $(srcdir)/preinstall.am
PREINSTALL_DIRS =
PREINSTALL_FILES =
$(PROJECT_INCLUDE)/$(dirstamp):
@$(MKDIR_P) $(PROJECT_INCLUDE)
@: > $(PROJECT_INCLUDE)/$(dirstamp)
PREINSTALL_DIRS += $(PROJECT_INCLUDE)/$(dirstamp)
$(PROJECT_LIB)/$(dirstamp):
@$(MKDIR_P) $(PROJECT_LIB)
@: > $(PROJECT_LIB)/$(dirstamp)
PREINSTALL_DIRS += $(PROJECT_LIB)/$(dirstamp)
$(PROJECT_LIB)/bsp_specs: bsp_specs $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/bsp_specs
PREINSTALL_FILES += $(PROJECT_LIB)/bsp_specs
$(PROJECT_INCLUDE)/bsp.h: include/bsp.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp.h
$(PROJECT_INCLUDE)/tm27.h: include/tm27.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/tm27.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/tm27.h
$(PROJECT_INCLUDE)/bspopts.h: include/bspopts.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bspopts.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bspopts.h
$(PROJECT_INCLUDE)/coverhd.h: $(top_srcdir)/../shared/include/coverhd.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h
CLEANFILES = $(PREINSTALL_FILES)
DISTCLEANFILES += $(PREINSTALL_DIRS)
include $(top_srcdir)/../../../automake/local.am

View File

@@ -1,45 +0,0 @@
## Automatically generated by ampolish3 - Do not edit
if AMPOLISH3
$(srcdir)/preinstall.am: Makefile.am
$(AMPOLISH3) $(srcdir)/Makefile.am > $(srcdir)/preinstall.am
endif
PREINSTALL_DIRS =
DISTCLEANFILES += $(PREINSTALL_DIRS)
all-am: $(PREINSTALL_FILES)
PREINSTALL_FILES =
CLEANFILES = $(PREINSTALL_FILES)
$(PROJECT_LIB)/$(dirstamp):
@$(MKDIR_P) $(PROJECT_LIB)
@: > $(PROJECT_LIB)/$(dirstamp)
PREINSTALL_DIRS += $(PROJECT_LIB)/$(dirstamp)
$(PROJECT_INCLUDE)/$(dirstamp):
@$(MKDIR_P) $(PROJECT_INCLUDE)
@: > $(PROJECT_INCLUDE)/$(dirstamp)
PREINSTALL_DIRS += $(PROJECT_INCLUDE)/$(dirstamp)
$(PROJECT_LIB)/bsp_specs: bsp_specs $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/bsp_specs
PREINSTALL_FILES += $(PROJECT_LIB)/bsp_specs
$(PROJECT_INCLUDE)/bsp.h: include/bsp.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp.h
$(PROJECT_INCLUDE)/tm27.h: include/tm27.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/tm27.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/tm27.h
$(PROJECT_INCLUDE)/bspopts.h: include/bspopts.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bspopts.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bspopts.h
$(PROJECT_INCLUDE)/coverhd.h: ../shared/include/coverhd.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h

View File

@@ -1,7 +1,3 @@
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
2008-08-15 Allan Hessenflow <allanh@kallisti.com>
* ChangeLog, Makefile.am, README, bsp_specs, configure.ac,

View File

@@ -4,7 +4,7 @@
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s -e __start}}
%{!nostdlib: %{qrtems: start.o%s}}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e __start}

View File

@@ -1,7 +1,3 @@
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
2008-08-18 Allan Hessenflow <allanh@kallisti.com>
* Makefile.am, console/console-io.c, startup/bspstart.c: Update to use

View File

@@ -4,7 +4,7 @@
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s -e __start}}
%{!nostdlib: %{qrtems: start.o%s}}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e __start}

View File

@@ -1,11 +1,3 @@
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
2008-09-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Remove noinst_PROGRAMS (Unused).
2008-08-19 Ralf Corsépius <ralf.corsepius@rtems.org>
* startup/__main.c: Add missing prototypes.

View File

@@ -14,6 +14,7 @@ include_HEADERS += include/tm27.h
nodist_include_HEADERS = include/bspopts.h
DISTCLEANFILES = include/bspopts.h
noinst_PROGRAMS =
nodist_include_HEADERS += ../../shared/include/coverhd.h

View File

@@ -4,8 +4,8 @@
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s -e _start}}
%{!nostdlib: %{qrtems: start.o%s}}
*link:
%(old_link) %{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
%(old_link) %{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e _start}

View File

@@ -1,17 +1,3 @@
2009-05-18 Joel Sherrill <joel.sherrill@OARcorp.com>
* shared/irq/irq.c, shared/irq/irq.h, shared/irq/irq_asm.S: Add shared
interrupt support to i386.
2009-03-12 Joel Sherrill <joel.sherrill@OARcorp.com>
PR 1385/cpukit
* shared/irq/irq_asm.S: When the type rtems_boolean was switched to the
C99 bool, the size changed from 4 bytes to 1 byte. The interrupt
dispatching code accesses two boolean variables for scheduling
purposes and the assembly implementations of this code did not get
updated.
2008-09-07 Ralf Corsépius <ralf.corsepius@rtems.org>
* shared/comm/i386-stub.c: Include stdbool.h.

View File

@@ -1,11 +1,3 @@
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
2008-09-30 Joel Sherrill <joel.sherrill@oarcorp.com>
* timer/timer.c: Eliminate uses of old benchmark timer names.
2008-09-05 Joel Sherrill <joel.sherrill@OARcorp.com>
* clock/ckinit.c: The Shared Memory Driver no longer requires the

View File

@@ -4,7 +4,7 @@
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s -e reset}}
%{!nostdlib: %{qrtems: start.o%s}}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e reset}

View File

@@ -1,4 +1,18 @@
/*
/* Timer_init()
*
* This routine initializes the timer on the FORCE CPU-386 board.
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* NOTE: This routine will not work if the optimizer is enabled
* for some compilers. The multiple writes to the Z8036
* may be optimized away.
*
* It is important that the timer start/stop overhead be
* determined when porting or modifying this code.
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*

View File

@@ -1,33 +1,3 @@
2010-03-10 Gedare Bloom <gedare@gwu.edu>
PR 1495/bsp
* clock/ckinit.c: Calling rtems_clock_get_uptime() in a tight loop
sometimes showed time moving backwards.
2009-09-15 Till Straumann <strauman@slac.stanford.edu>
PR 1344/bsps:
* clock/ckinit.c: Fix more bugs (applied PR1344/attachment 702):
TSC handler was used when 8254 was requested and vice versa.
Also, nanosecond handler was never installed to RTEMS clock.
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
2008-12-04 Joel Sherrill <joel.sherrill@OARcorp.com>
PR 1344/bsps
* clock/ckinit.c: Committed code was not final. Corrections.
2008-12-03 Joel Sherrill <joel.sherrill@OARcorp.com>
Michael South <msouth@msouth.org>
PR 1344/bsps
* configure.ac, clock/ckinit.c, timer/timer.c: Add use of TSC for
nanoseconds granularity. i8254 is very slow on some systems. TSC use
is auto-detected by default.
2008-09-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* ide/ide.c: Convert to "bool".

View File

@@ -7,7 +7,7 @@ crtend.o%s crtn.o%s
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e start}}
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s}}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e start}

View File

@@ -24,7 +24,6 @@
#include <bsp.h>
#include <bsp/irq.h>
#include <bspopts.h>
#include <libcpu/cpuModel.h>
#define CLOCK_VECTOR 0
@@ -32,62 +31,12 @@ volatile uint32_t pc386_microseconds_per_isr;
volatile uint32_t pc386_isrs_per_tick;
uint32_t pc386_clock_click_count;
/*
* Roughly the number of cycles per tick and per nanosecond. Note that these
* will be wildly inaccurate if the chip speed changes due to power saving
* or thermal modes.
*
* NOTE: These are only used when the TSC method is used.
*/
uint64_t pc586_tsc_per_tick;
uint64_t pc586_nanoseconds_per_tick;
uint64_t pc586_tsc_at_tick;
/* this driver may need to count ISRs per tick */
#define CLOCK_DRIVER_ISRS_PER_TICK pc386_isrs_per_tick
/* if so, the driver may use the count in Clock_driver_support_at_tick */
#ifdef CLOCK_DRIVER_ISRS_PER_TICK
extern volatile uint32_t Clock_driver_isrs;
#endif
#define READ_8254( _lsb, _msb ) \
do { outport_byte(TIMER_MODE, TIMER_SEL0|TIMER_LATCH); \
inport_byte(TIMER_CNTR0, _lsb); \
inport_byte(TIMER_CNTR0, _msb); \
} while (0)
/*
* Hooks which get swapped based upon which nanoseconds since last
* tick method is preferred.
*/
void (*Clock_driver_support_at_tick)(void) = NULL;
uint32_t (*Clock_driver_nanoseconds_since_last_tick)(void) = NULL;
/*
* What do we do at each clock tick?
*/
void Clock_driver_support_at_tick_tsc(void)
{
#ifdef CLOCK_DRIVER_ISRS_PER_TICK
/*
* The driver is multiple ISRs per clock tick.
*/
if (!Clock_driver_isrs)
pc586_tsc_at_tick = rdtsc();
#else
/*
* The driver is one ISR per clock tick.
*/
pc586_tsc_at_tick = rdtsc();
#endif
}
void Clock_driver_support_at_tick_empty(void)
{
}
#define Clock_driver_support_at_tick()
#define Clock_driver_support_install_isr( _new, _old ) \
do { \
@@ -95,41 +44,8 @@ void Clock_driver_support_at_tick_empty(void)
extern volatile uint32_t Clock_driver_isrs;
uint32_t bsp_clock_nanoseconds_since_last_tick_tsc(void)
uint32_t bsp_clock_nanoseconds_since_last_tick(void)
{
/******
* Get nanoseconds using Pentium-compatible TSC register
******/
uint64_t diff_nsec;
diff_nsec = rdtsc() - pc586_tsc_at_tick;
/*
* At this point, with a hypothetical 10 GHz CPU clock and 100 Hz tick
* clock, diff_nsec <= 27 bits.
*/
diff_nsec *= pc586_nanoseconds_per_tick; /* <= 54 bits */
diff_nsec /= pc586_tsc_per_tick;
if (diff_nsec > pc586_nanoseconds_per_tick)
/*
* Hmmm... Some drift or rounding. Pin the value to 1 nanosecond before
* the next tick.
*/
/* diff_nsec = pc586_nanoseconds_per_tick - 1; */
diff_nsec = 12345;
return (uint32_t)diff_nsec;
}
uint32_t bsp_clock_nanoseconds_since_last_tick_i8254(void)
{
/******
* Get nanoseconds using 8254 timer chip
******/
uint32_t usecs, clicks, isrs;
uint32_t usecs1, usecs2;
uint8_t lsb, msb;
@@ -139,7 +55,9 @@ uint32_t bsp_clock_nanoseconds_since_last_tick_i8254(void)
* Fetch all the data in an interrupt critical section.
*/
rtems_interrupt_disable(level);
READ_8254(lsb, msb);
outport_byte(TIMER_MODE, TIMER_SEL0|TIMER_LATCH);
inport_byte(TIMER_CNTR0, lsb);
inport_byte(TIMER_CNTR0, msb);
isrs = Clock_driver_isrs;
rtems_interrupt_enable(level);
@@ -167,58 +85,10 @@ uint32_t bsp_clock_nanoseconds_since_last_tick_i8254(void)
/* return it in nanoseconds */
return usecs * 1000;
}
/*
* Calibrate CPU cycles per tick. Interrupts should be disabled.
*/
static void calibrate_tsc(void)
{
uint64_t begin_time;
uint8_t then_lsb, then_msb, now_lsb, now_msb;
uint32_t i;
pc586_nanoseconds_per_tick =
rtems_configuration_get_microseconds_per_tick() * 1000;
/*
* We just reset the timer, so we know we're at the beginning of a tick.
*/
/*
* Count cycles. Watching the timer introduces a several microsecond
* uncertaintity, so let it cook for a while and divide by the number of
* ticks actually executed.
*/
begin_time = rdtsc();
for (i = rtems_clock_get_ticks_per_second() * pc386_isrs_per_tick;
i != 0; --i ) {
/* We know we've just completed a tick when timer goes from low to high */
then_lsb = then_msb = 0xff;
do {
READ_8254(now_lsb, now_msb);
if ((then_msb < now_msb) ||
((then_msb == now_msb) && (then_lsb < now_lsb)))
break;
then_lsb = now_lsb;
then_msb = now_msb;
} while (1);
}
pc586_tsc_per_tick = rdtsc() - begin_time;
/* Initialize "previous tick" counters */
pc586_tsc_at_tick = rdtsc();
#if 0
printk( "CPU clock at %u MHz\n", (uint32_t)(pc586_tsc_per_tick / 1000000));
#endif
pc586_tsc_per_tick /= rtems_clock_get_ticks_per_second();
}
#define Clock_driver_nanoseconds_since_last_tick \
bsp_clock_nanoseconds_since_last_tick
static void clockOn(
const rtems_irq_connect_data* unused
@@ -244,13 +114,6 @@ static void clockOn(
outport_byte(TIMER_MODE, TIMER_SEL0|TIMER_16BIT|TIMER_RATEGEN);
outport_byte(TIMER_CNTR0, pc386_clock_click_count >> 0 & 0xff);
outport_byte(TIMER_CNTR0, pc386_clock_click_count >> 8 & 0xff);
/*
* Now calibrate cycles per tick. Do this every time we
* turn the clock on in case the CPU clock speed has changed.
*/
if ( x86_has_tsc() )
calibrate_tsc();
}
void clockOff(const rtems_irq_connect_data* unused)
@@ -279,50 +142,13 @@ static rtems_irq_connect_data clockIrqData = {
clockIsOn
};
void Clock_driver_support_initialize_hardware(void)
{
bool use_tsc = false;
bool use_8254 = false;
#if (CLOCK_DRIVER_USE_TSC == 1)
use_tsc = true;
#endif
#if (CLOCK_DRIVER_USE_8254 == 1)
use_8254 = true;
#endif
if ( !use_tsc && !use_8254 ) {
if ( x86_has_tsc() ) use_tsc = true;
else use_8254 = true;
}
if ( use_8254 ) {
/* printk( "Use 8254\n" ); */
Clock_driver_support_at_tick = Clock_driver_support_at_tick_empty;
Clock_driver_nanoseconds_since_last_tick =
bsp_clock_nanoseconds_since_last_tick_i8254;
} else {
/* printk( "Use TSC\n" ); */
Clock_driver_support_at_tick = Clock_driver_support_at_tick_tsc;
Clock_driver_nanoseconds_since_last_tick =
bsp_clock_nanoseconds_since_last_tick_tsc;
}
/* Shell installs nanosecond handler before calling
* Clock_driver_support_initialize_hardware() :-(
* so we do it again now that we're ready.
*/
rtems_clock_set_nanoseconds_extension(
Clock_driver_nanoseconds_since_last_tick
);
if (!BSP_install_rtems_irq_handler (&clockIrqData)) {
printk("Unable to initialize system clock\n");
rtems_fatal_error_occurred(1);
}
}
#define Clock_driver_support_initialize_hardware() \
do { \
if (!BSP_install_rtems_irq_handler (&clockIrqData)) { \
printk("Unable to initialize system clock\n"); \
rtems_fatal_error_occurred(1); \
} \
} while (0)
#define Clock_driver_support_shutdown_hardware() \
do { \

View File

@@ -46,41 +46,6 @@ RTEMS_BSPOPTS_HELP([BSP_PRESS_KEY_FOR_RESET],
before rebooting the PC. This is useful for unattended PC deployments
])
RTEMS_BSPOPTS_SET([CLOCK_DRIVER_USE_TSC],[*],[0])
RTEMS_BSPOPTS_HELP([CLOCK_DRIVER_USE_TSC],
[If enabled, the clock driver will use the TSC register available
with Pentium-class CPUs to report close to nanosecond-accuracy
clock times.
Enable it, if:
- you have nanosecond timing enabled (you do NOT have
USE_TICKS_FOR_CPU_USAGE_STATISTICS enabled)
- you do NOT have CLOCK_DRIVER_USE_8254 enabled (use one, the other,
or neither)
- you have a Pentium which supports TSC (all Intels, and probably
all or most clones)
- you do not have a variable-speed CPU clock. Note that some
motherboard BIOS will automatically vary clock speed for thermal
control. Note also, however, that really new Pentium-class chips
from Intel and AMD will maintain a constant-rate TSC regardless.
])
RTEMS_BSPOPTS_SET([CLOCK_DRIVER_USE_8254],[*],[0])
RTEMS_BSPOPTS_HELP([CLOCK_DRIVER_USE_8254],
[If enabled, the clock driver will use the good old 8254 chip
to report microsecond-accuracy clock times.
Enable it, if:
- you have nanosecond timing enabled (you do NOT have
USE_TICKS_FOR_CPU_USAGE_STATISTICS enabled)
- you do NOT have CLOCK_DRIVER_USE_TSC enabled (use one, the other,
or neither)
- you do not mind adding roughly 5 microseconds to each context switch.
])
if test X${CLOCK_DRIVER_USE_TSC} = X1 -a X${CLOCK_DRIVER_USE_8254} = X1 ; then
AC_MSG_ERROR([pc386 both TSC and 8254 specified for clock driver])
fi
#define CLOCK_DRIVER_USE_8254 $CLOCK_DRIVER_USE_8254
## if this is an i386, does gas have good code16 support?
RTEMS_I386_GAS_CODE16
AM_CONDITIONAL(RTEMS_GAS_CODE16,[test "$RTEMS_GAS_CODE16" = "yes"])

View File

@@ -273,20 +273,6 @@ static int console_last_close(int major, int minor, void *arg)
return 0;
}
static int ser_console_first_open(int major, int minor, void *arg)
{
/*
* Pass data area info down to driver
*/
BSP_uart_termios_set(BSPConsolePort,
((rtems_libio_open_close_args_t *)arg)->iop->data1);
/* Enable interrupts on channel */
BSP_uart_intr_ctrl(BSPConsolePort, BSP_UART_INTR_CTRL_TERMIOS);
return 0;
}
/*-------------------------------------------------------------------------+
| Console device driver OPEN entry point
+--------------------------------------------------------------------------*/
@@ -334,8 +320,6 @@ console_open(rtems_device_major_number major,
cb.write = BSP_uart_termios_write_com2;
}
cb.firstOpen = ser_console_first_open;
status = rtems_termios_open (major, minor, arg, &cb);
if(status != RTEMS_SUCCESSFUL)
@@ -344,6 +328,15 @@ console_open(rtems_device_major_number major,
return status;
}
/*
* Pass data area info down to driver
*/
BSP_uart_termios_set(BSPConsolePort,
((rtems_libio_open_close_args_t *)arg)->iop->data1);
/* Enable interrupts on channel */
BSP_uart_intr_ctrl(BSPConsolePort, BSP_UART_INTR_CTRL_TERMIOS);
return RTEMS_SUCCESSFUL;
}

View File

@@ -42,7 +42,6 @@
#include <bsp.h>
#include <bsp/irq.h>
#include <libcpu/cpuModel.h>
/*-------------------------------------------------------------------------+
| Constants
@@ -60,18 +59,18 @@
| Global Variables
+--------------------------------------------------------------------------*/
volatile uint32_t Ttimer_val;
bool benchmark_timer_find_average_overhead = true;
bool benchmark_timer_find_average_overhead = true;
volatile unsigned int fastLoop1ms, slowLoop1ms;
void (*benchmark_timer_initialize_function)(void) = 0;
void (*benchmark_timer_initialize_function)(void) = 0;
uint32_t (*benchmark_timer_read_function)(void) = 0;
void (*Timer_exit_function)(void) = 0;
void (*Timer_exit_function)(void) = 0;
/*-------------------------------------------------------------------------+
| External Prototypes
+--------------------------------------------------------------------------*/
extern void timerisr(void);
/* timer (int 08h) Interrupt Service Routine (defined in 'timerisr.s') */
extern int x86_capability;
/*
* forward declarations
@@ -83,6 +82,22 @@ void Timer_exit(void);
| Pentium optimized timer handling.
+--------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------+
| Function: rdtsc
| Description: Read the value of PENTIUM on-chip cycle counter.
| Global Variables: None.
| Arguments: None.
| Returns: Value of PENTIUM on-chip cycle counter.
+--------------------------------------------------------------------------*/
static inline unsigned long long
rdtsc(void)
{
/* Return the value of the on-chip cycle counter. */
unsigned long long result;
asm volatile(".byte 0x0F, 0x31" : "=A" (result));
return result;
} /* rdtsc */
/*-------------------------------------------------------------------------+
| Function: Timer_exit
| Description: Timer cleanup routine at RTEMS exit. NOTE: This routine is
@@ -273,7 +288,7 @@ benchmark_timer_initialize(void)
static bool First = true;
if (First) {
if (x86_has_tsc()) {
if (x86_capability & (1 << 4) ) {
#if defined(DEBUG)
printk("TSC: timer initialization\n");
#endif /* DEBUG */

View File

@@ -2,7 +2,7 @@
*
* This file contains the implementation of the function described in irq.h
*
* Copyright (C) 1998 valette@crf.canon.fr
* CopyRight (C) 1998 valette@crf.canon.fr
*
* The license and distribution terms for this file may be
* found in found in the file LICENSE in this distribution or at
@@ -195,63 +195,7 @@ static int isValidInterrupt(int irq)
}
/*
* ------------------- RTEMS Shared Irq Handler Mngt Routines ------------
*/
int BSP_install_rtems_shared_irq_handler (const rtems_irq_connect_data* irq)
{
rtems_interrupt_level level;
rtems_irq_connect_data* vchain;
if (!isValidInterrupt(irq->name)) {
printk("Invalid interrupt vector %d\n",irq->name);
return 0;
}
rtems_interrupt_disable(level);
if ( (int)rtems_hdl_tbl[irq->name].next_handler == -1 ) {
rtems_interrupt_enable(level);
printk(
"IRQ vector %d already connected to an unshared handler\n",
irq->name
);
return 0;
}
vchain = (rtems_irq_connect_data*)malloc(sizeof(rtems_irq_connect_data));
/* save off topmost handler */
vchain[0]= rtems_hdl_tbl[irq->name];
/*
* store the data provided by user
*/
rtems_hdl_tbl[irq->name] = *irq;
/* link chain to new topmost handler */
rtems_hdl_tbl[irq->name].next_handler = (void *)vchain;
/*
* enable_irq_at_pic is supposed to ignore
* requests to disable interrupts outside
* of the range handled by the PIC
*/
BSP_irq_enable_at_i8259s (irq->name);
/*
* Enable interrupt on device
*/
if (irq->on)
irq->on(irq);
rtems_interrupt_enable(level);
return 1;
}
/*
* --------------- RTEMS Single Irq Handler Mngt Routines ---------------
* ------------------------ RTEMS Single Irq Handler Mngt Routines ----------------
*/
int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
@@ -278,8 +222,6 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
* store the data provided by user
*/
rtems_hdl_tbl[irq->name] = *irq;
rtems_hdl_tbl[irq->name].next_handler = (void *)-1;
/*
* Enable interrupt at PIC level
*/
@@ -287,7 +229,7 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq)
/*
* Enable interrupt on device
*/
if (irq->on)
if (irq->on)
irq->on(irq);
rtems_interrupt_enable(level);
@@ -310,86 +252,43 @@ int BSP_get_current_rtems_irq_handler (rtems_irq_connect_data* irq)
int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
{
rtems_interrupt_level level;
rtems_irq_connect_data *pchain= NULL, *vchain = NULL;
rtems_interrupt_level level;
if (!isValidInterrupt(irq->name)) {
return 0;
}
/*
* Check if default handler is actually connected. If not issue an error.
* You must first get the current handler via i386_get_current_idt_entry
* and then disconnect it using i386_delete_idt_entry.
* RATIONALE : to always have the same transition by forcing the user
* to get the previous handler before accepting to disconnect.
*/
rtems_interrupt_disable(level);
if (rtems_hdl_tbl[irq->name].hdl != irq->hdl) {
rtems_interrupt_enable(level);
return 0;
}
if ( (int)rtems_hdl_tbl[irq->name].next_handler != -1 ) {
int found = 0;
for( (pchain= NULL, vchain = &rtems_hdl_tbl[irq->name]);
(vchain->hdl != default_rtems_entry.hdl);
(pchain= vchain,
vchain = (rtems_irq_connect_data*)vchain->next_handler) ) {
if ( vchain->hdl == irq->hdl ) {
found = -1;
break;
}
}
if ( !found ) {
rtems_interrupt_enable(level);
if (!isValidInterrupt(irq->name)) {
return 0;
}
} else {
/*
* Check if default handler is actually connected. If not issue an error.
* You must first get the current handler via i386_get_current_idt_entry
* and then disconnect it using i386_delete_idt_entry.
* RATIONALE : to always have the same transition by forcing the user
* to get the previous handler before accepting to disconnect.
*/
rtems_interrupt_disable(level);
if (rtems_hdl_tbl[irq->name].hdl != irq->hdl) {
rtems_interrupt_enable(level);
return 0;
}
}
/*
* disable interrupt at PIC level
*/
BSP_irq_disable_at_i8259s (irq->name);
/*
* disable interrupt at PIC level
*/
BSP_irq_disable_at_i8259s (irq->name);
/*
* Disable interrupt on device
*/
if (irq->off)
irq->off(irq);
/*
* Disable interrupt on device
*/
if (irq->off)
irq->off(irq);
/*
* restore the default irq value
*/
if( !vchain ) {
/* single handler vector... */
rtems_hdl_tbl[irq->name] = default_rtems_entry;
} else {
if ( pchain ) {
/* non-first handler being removed */
pchain->next_handler = vchain->next_handler;
} else {
/* first handler isn't malloc'ed, so just overwrite it. Since
* the contents of vchain are being struct copied, vchain itself
* goes away
*/
vchain = vchain->next_handler;
rtems_hdl_tbl[irq->name]= *vchain;
}
free(vchain);
}
/*
* restore the default irq value
*/
rtems_hdl_tbl[irq->name] = default_rtems_entry;
rtems_interrupt_enable(level);
rtems_interrupt_enable(level);
return 1;
return 1;
}
/*
@@ -399,7 +298,6 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
int BSP_rtems_irq_mngt_set(rtems_irq_global_settings* config)
{
int i;
rtems_irq_connect_data* vchain;
rtems_interrupt_level level;
/*
@@ -416,16 +314,17 @@ int BSP_rtems_irq_mngt_set(rtems_irq_global_settings* config)
compute_i8259_masks_from_prio ();
for (i=0; i < internal_config->irqNb; i++) {
BSP_irq_disable_at_i8259s (i);
for( vchain = &rtems_hdl_tbl[i];
((int)vchain != -1 && vchain->hdl != default_rtems_entry.hdl);
vchain = (rtems_irq_connect_data*)vchain->next_handler ) {
if (rtems_hdl_tbl[i].hdl != default_rtems_entry.hdl) {
BSP_irq_enable_at_i8259s (i);
if (vchain->on)
vchain->on(vchain);
if (rtems_hdl_tbl[i].on)
rtems_hdl_tbl[i].on(&rtems_hdl_tbl[i]);
}
else {
if (rtems_hdl_tbl[i].off)
rtems_hdl_tbl[i].off(&rtems_hdl_tbl[i]);
BSP_irq_disable_at_i8259s (i);
}
}
/*
* must enable slave pic anyway
*/
@@ -464,23 +363,3 @@ void processIrq(unsigned index)
rtems_hdl_tbl[index].hdl(rtems_hdl_tbl[index].handle);
}
static inline void
bsp_irq_dispatch_list(
rtems_irq_connect_data *tbl,
unsigned irq,
rtems_irq_hdl sentinel
)
{
rtems_irq_connect_data* vchain;
for( vchain = &tbl[irq];
((int)vchain != -1 && vchain->hdl != sentinel);
vchain = (rtems_irq_connect_data*)vchain->next_handler ) {
vchain->hdl(vchain->handle);
}
}
void C_dispatch_isr(int irq)
{
bsp_irq_dispatch_list(rtems_hdl_tbl, irq, default_rtems_entry.hdl);
}

View File

@@ -31,7 +31,6 @@ extern "C" {
#include <bsp/irq_asm.h>
#include <rtems.h>
#define BSP_SHARED_HANDLER_SUPPORT 1
#include <rtems/irq.h>
/*-------------------------------------------------------------------------+
@@ -47,7 +46,7 @@ extern "C" {
* Interrupt offset in comparison to BSP_ASM_IRQ_VECTOR_BASE
* NB : 1) Interrupt vector number in IDT = offset + BSP_ASM_IRQ_VECTOR_BASE
* 2) The same name should be defined on all architecture
* so that handler connection can be unchanged.
* so that handler connexion can be unchanged.
*/
#define BSP_PERIODIC_TIMER 0
#define BSP_KEYBOARD 1

View File

@@ -107,7 +107,11 @@ nested:
*/
pushl ecx /* push vector number */
call C_dispatch_isr
lea (ecx,ecx,2), eax
mov SYM (rtems_hdl_tbl), edx
shl $0x3,eax
pushl 0x8(edx,eax,1) /* push hdl argument */
call *0x4(edx,eax,1) /* call hdl */
addl $4, esp
/*
@@ -139,17 +143,17 @@ nested:
/* Is dispatch disabled */
jne .exit /* Yes, then exit */
cmpb $0, SYM (_Context_Switch_necessary)
cmpl $0, SYM (_Context_Switch_necessary)
/* Is task switch necessary? */
jne .schedule /* Yes, then call the scheduler */
cmpb $0, SYM (_ISR_Signals_to_thread_executing)
cmpl $0, SYM (_ISR_Signals_to_thread_executing)
/* signals sent to Run_thread */
/* while in interrupt handler? */
je .exit /* No, exit */
.bframe:
movb $0, SYM (_ISR_Signals_to_thread_executing)
movl $0, SYM (_ISR_Signals_to_thread_executing)
/*
* This code is the less critical path. In order to have a single
* Thread Context, we take the same frame than the one pushed on

View File

@@ -1,11 +1,3 @@
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
2008-09-30 Joel Sherrill <joel.sherrill@oarcorp.com>
* timer/timer.c: Eliminate uses of old benchmark timer names.
2008-09-05 Joel Sherrill <joel.sherrill@OARcorp.com>
* clock/ckinit.c: The Shared Memory Driver no longer requires the

View File

@@ -4,10 +4,10 @@
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _init_i386ex}}
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s}}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e _init_i386ex}
*endfile:
%{!qrtems: %(old_endfile)} %{qrtems: crtend.o%s crtn.o%s}

View File

@@ -1,4 +1,18 @@
/*
/* Timer_init()
*
* This routine initializes the timer on the FORCE CPU-386 board.
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* NOTE: This routine will not work if the optimizer is enabled
* for some compilers. The multiple writes to the Z8036
* may be optimized away.
*
* It is important that the timer start/stop overhead be
* determined when porting or modifying this code.
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*

View File

@@ -1,17 +1,3 @@
2009-01-21 Frank Ueberschar <frank.ueberschar@dsa-volgmann.de>
PR 1354/bsps
* network/network.c: In some cases it can occur that an empty mbuf is
put on the descriptor chain. (We found it especially then when
transmitting fragmented IP Packets.) Since the actual buffer
descriptor pointer will be incremented after every inserted mbuf
(txBd = sc->txBdBase + sc->txBdHead;) even if m->m_len of the current
mbuf was zero. This leads to the bug.
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
2008-09-05 Ralf Corsépius <ralf.corsepius@rtems.org>
* timer/timer.c: Convert to "bool".

View File

@@ -4,10 +4,10 @@
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e start}}
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s}}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e start}
*endfile:
%{!qrtems: %(old_endfile)} %{qrtems: crtend.o%s crtn.o%s}

View File

@@ -548,10 +548,10 @@ fec_sendpacket(struct ifnet *ifp, struct mbuf *m)
* The IP fragmentation routine in ip_output
* can produce fragments with zero length.
*/
txBd = sc->txBdBase + sc->txBdHead;
if (m->m_len){
char *p = mtod(m, char *);
int offset = (int) p & 0x3;
txBd = sc->txBdBase + sc->txBdHead;
if (offset == 0) {
txBd->buffer = p;
txBd->length = m->m_len;

View File

@@ -1,11 +1,3 @@
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
2008-09-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Remove noinst_PROGRAMS (Unused).
2008-08-19 Ralf Corsépius <ralf.corsepius@rtems.org>
* startup/init5272.c: Add missing prototypes.

View File

@@ -14,6 +14,7 @@ include_HEADERS += include/tm27.h
nodist_include_HEADERS = include/bspopts.h
DISTCLEANFILES = include/bspopts.h
noinst_PROGRAMS =
include_HEADERS += include/coverhd.h

View File

@@ -11,10 +11,10 @@
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e start}}
%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s }}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N} \
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e start} \
%{qclock=*: -defsym _SYS_CLOCK_FREQUENCY=%*}
*endfile:

Some files were not shown because too many files have changed in this diff Show More