mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-11-27 03:05:50 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
364e64d2a0 |
@@ -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.
|
||||
|
||||
@@ -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";;
|
||||
|
||||
@@ -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])
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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])
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -152,7 +152,6 @@ TEST_SUPPORT.PAUSE;
|
||||
0
|
||||
);
|
||||
|
||||
TEXT_IO.PUT_LINE( "*** END OF TIME TEST CHECK ***" );
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end TASK_1;
|
||||
|
||||
@@ -1396,7 +1396,6 @@ TEST_SUPPORT.PAUSE;
|
||||
0
|
||||
);
|
||||
|
||||
TEXT_IO.PUT_LINE( "*** END OF TIME TEST OVERHEAD ***" );
|
||||
RTEMS.SHUTDOWN_EXECUTIVE( 0 );
|
||||
|
||||
end TASK_1;
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
--
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -92,7 +92,7 @@ int _textattr; /**< Text attribute */
|
||||
/*---------------------------------------------------------------------------*
|
||||
* Defaultfont *
|
||||
*---------------------------------------------------------------------------*/
|
||||
#include "defaultfont.h"
|
||||
#include "defaultfont.c"
|
||||
|
||||
/**
|
||||
* @brief gba_gotoxy function set screeen xy-coordinates
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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".
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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}
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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).
|
||||
*
|
||||
|
||||
@@ -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".
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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 { \
|
||||
|
||||
@@ -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"])
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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).
|
||||
*
|
||||
|
||||
@@ -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".
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user