@@ -55,8 +55,6 @@ distribution.
5555#include "lwp_priority.h"
5656#include "lwp_watchdog.h"
5757#include "lwp_wkspace.h"
58- #include "lwp_objmgr.h"
59- #include "lwp_config.h"
6058#include "libversion.h"
6159
6260#define SYSMEM1_SIZE 0x01800000
@@ -78,14 +76,6 @@ distribution.
7876#define DSPCR_PIINT 0x0002 // assert DSP PI interrupt
7977#define DSPCR_RES 0x0001 // reset DSP
8078
81- #define LWP_OBJTYPE_SYSWD 7
82-
83- #define LWP_CHECK_SYSWD (hndl ) \
84- { \
85- if(((hndl)==SYS_WD_NULL) || (LWP_OBJTYPE(hndl)!=LWP_OBJTYPE_SYSWD)) \
86- return NULL; \
87- }
88-
8979#define _SHIFTL (v , s , w ) \
9080 ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s)))
9181#define _SHIFTR (v , s , w ) \
@@ -99,17 +89,6 @@ struct _sramcntrl {
9989 s32 sync ;
10090} sramcntrl ATTRIBUTE_ALIGN (32 );
10191
102- typedef struct _alarm_st
103- {
104- lwp_obj object ;
105- wd_cntrl alarm ;
106- u64 ticks ;
107- u64 periodic ;
108- u64 start_per ;
109- alarmcallback alarmhandler ;
110- void * cb_arg ;
111- } alarm_st ;
112-
11392typedef struct _yay0header {
11493 unsigned int id ATTRIBUTE_PACKED ;
11594 unsigned int dec_size ATTRIBUTE_PACKED ;
@@ -125,7 +104,6 @@ static sys_fontheader *sys_fontdata = NULL;
125104
126105static lwp_queue sys_reset_func_queue ;
127106static u32 system_initialized = 0 ;
128- static lwp_objinfo sys_alarm_objects ;
129107
130108static void * __sysarena1lo = NULL ;
131109static void * __sysarena1hi = NULL ;
@@ -160,9 +138,9 @@ static s32 __sram_sync(void);
160138static s32 __sram_writecallback (s32 chn ,s32 dev );
161139static s32 __mem_onreset (s32 final );
162140
163- extern void __lwp_thread_coreinit (void );
164- extern void __lwp_sysinit (void );
165- extern void __heap_init (void );
141+ extern void __lwp_thread_coreinit (void );
142+ extern void __lwp_sysinit (void );
143+ extern void __lwp_syswd_init (void );
166144extern void __exception_init (void );
167145extern void __exception_closeall (void );
168146extern void __systemcall_init (void );
@@ -174,7 +152,6 @@ extern void __lwp_sema_init(void);
174152extern void __exi_init (void );
175153extern void __si_init (void );
176154extern void __irq_init (void );
177- extern void __lwp_start_multitasking (void );
178155extern void __memlock_init (void );
179156extern void __libc_init (int );
180157
@@ -247,18 +224,6 @@ static sys_resetinfo mem_resetinfo = {
247224static const char * __sys_versiondate ;
248225static const char * __sys_versionbuild ;
249226
250- static __inline__ alarm_st * __lwp_syswd_open (syswd_t wd )
251- {
252- LWP_CHECK_SYSWD (wd );
253- return (alarm_st * )__lwp_objmgr_get (& sys_alarm_objects ,LWP_OBJMASKID (wd ));
254- }
255-
256- static __inline__ void __lwp_syswd_free (alarm_st * alarm )
257- {
258- __lwp_objmgr_close (& sys_alarm_objects ,& alarm -> object );
259- __lwp_objmgr_free (& sys_alarm_objects ,& alarm -> object );
260- }
261-
262227static void (* reload )(void ) = (void (* )(void ))0x80001800 ;
263228
264229static bool __stub_found (void )
@@ -301,20 +266,6 @@ void __syscall_exit(int rc)
301266#endif
302267}
303268
304- static alarm_st * __lwp_syswd_allocate (void )
305- {
306- alarm_st * alarm ;
307-
308- __lwp_thread_dispatchdisable ();
309- alarm = (alarm_st * )__lwp_objmgr_allocate (& sys_alarm_objects );
310- if (alarm ) {
311- __lwp_objmgr_open (& sys_alarm_objects ,& alarm -> object );
312- return alarm ;
313- }
314- __lwp_thread_dispatchenable ();
315- return NULL ;
316- }
317-
318269static s32 __mem_onreset (s32 final )
319270{
320271 if (final == TRUE) {
@@ -324,22 +275,6 @@ static s32 __mem_onreset(s32 final)
324275 return 1 ;
325276}
326277
327- static void __sys_alarmhandler (void * arg )
328- {
329- alarm_st * alarm ;
330- syswd_t thealarm = (syswd_t )arg ;
331-
332- if (thealarm == SYS_WD_NULL || LWP_OBJTYPE (thealarm )!= LWP_OBJTYPE_SYSWD ) return ;
333-
334- __lwp_thread_dispatchdisable ();
335- alarm = (alarm_st * )__lwp_objmgr_getnoprotection (& sys_alarm_objects ,LWP_OBJMASKID (thealarm ));
336- if (alarm ) {
337- if (alarm -> periodic ) __lwp_wd_insert_ticks (& alarm -> alarm ,alarm -> periodic );
338- if (alarm -> alarmhandler ) alarm -> alarmhandler (thealarm ,alarm -> cb_arg );
339- }
340- __lwp_thread_dispatchunnest ();
341- }
342-
343278#if defined(HW_DOL )
344279void __SYS_DoHotReset (u32 reset_code )
345280{
@@ -1082,7 +1017,7 @@ void SYS_Init(void)
10821017#endif
10831018 __lwp_wkspace_init (KERNEL_HEAP );
10841019 __lwp_queue_init_empty (& sys_reset_func_queue );
1085- __lwp_objmgr_initinfo ( & sys_alarm_objects , LWP_MAX_WATCHDOGS , sizeof ( alarm_st ) );
1020+ __lwp_syswd_init ( );
10861021 __sys_state_init ();
10871022 __lwp_priority_init ();
10881023 __lwp_watchdog_init ();
@@ -1665,98 +1600,6 @@ void SYS_GetFontTexel(s32 c,void *image,s32 pos,s32 stride,s32 *width)
16651600 * width = sys_fontwidthtab [c ];
16661601}
16671602
1668- s32 SYS_CreateAlarm (syswd_t * thealarm )
1669- {
1670- alarm_st * alarm ;
1671-
1672- alarm = __lwp_syswd_allocate ();
1673- if (!alarm ) return -1 ;
1674-
1675- alarm -> alarmhandler = NULL ;
1676- alarm -> ticks = 0 ;
1677- alarm -> start_per = 0 ;
1678- alarm -> periodic = 0 ;
1679-
1680- * thealarm = (LWP_OBJMASKTYPE (LWP_OBJTYPE_SYSWD )|LWP_OBJMASKID (alarm -> object .id ));
1681- __lwp_thread_dispatchenable ();
1682- return 0 ;
1683- }
1684-
1685- s32 SYS_SetAlarm (syswd_t thealarm ,const struct timespec * tp ,alarmcallback cb ,void * cbarg )
1686- {
1687- alarm_st * alarm ;
1688-
1689- alarm = __lwp_syswd_open (thealarm );
1690- if (!alarm ) return -1 ;
1691-
1692- alarm -> cb_arg = cbarg ;
1693- alarm -> alarmhandler = cb ;
1694- alarm -> ticks = __lwp_wd_calc_ticks (tp );
1695-
1696- alarm -> periodic = 0 ;
1697- alarm -> start_per = 0 ;
1698-
1699- __lwp_wd_initialize (& alarm -> alarm ,__sys_alarmhandler ,alarm -> object .id ,(void * )thealarm );
1700- __lwp_wd_insert_ticks (& alarm -> alarm ,alarm -> ticks );
1701- __lwp_thread_dispatchenable ();
1702- return 0 ;
1703- }
1704-
1705- s32 SYS_SetPeriodicAlarm (syswd_t thealarm ,const struct timespec * tp_start ,const struct timespec * tp_period ,alarmcallback cb ,void * cbarg )
1706- {
1707- alarm_st * alarm ;
1708-
1709- alarm = __lwp_syswd_open (thealarm );
1710- if (!alarm ) return -1 ;
1711-
1712- alarm -> start_per = __lwp_wd_calc_ticks (tp_start );
1713- alarm -> periodic = __lwp_wd_calc_ticks (tp_period );
1714- alarm -> alarmhandler = cb ;
1715- alarm -> cb_arg = cbarg ;
1716-
1717- alarm -> ticks = 0 ;
1718-
1719- __lwp_wd_initialize (& alarm -> alarm ,__sys_alarmhandler ,alarm -> object .id ,(void * )thealarm );
1720- __lwp_wd_insert_ticks (& alarm -> alarm ,alarm -> start_per );
1721- __lwp_thread_dispatchenable ();
1722- return 0 ;
1723- }
1724-
1725- s32 SYS_RemoveAlarm (syswd_t thealarm )
1726- {
1727- alarm_st * alarm ;
1728-
1729- alarm = __lwp_syswd_open (thealarm );
1730- if (!alarm ) return -1 ;
1731-
1732- alarm -> alarmhandler = NULL ;
1733- alarm -> ticks = 0 ;
1734- alarm -> periodic = 0 ;
1735- alarm -> start_per = 0 ;
1736-
1737- __lwp_wd_remove_ticks (& alarm -> alarm );
1738- __lwp_syswd_free (alarm );
1739- __lwp_thread_dispatchenable ();
1740- return 0 ;
1741- }
1742-
1743- s32 SYS_CancelAlarm (syswd_t thealarm )
1744- {
1745- alarm_st * alarm ;
1746-
1747- alarm = __lwp_syswd_open (thealarm );
1748- if (!alarm ) return -1 ;
1749-
1750- alarm -> alarmhandler = NULL ;
1751- alarm -> ticks = 0 ;
1752- alarm -> periodic = 0 ;
1753- alarm -> start_per = 0 ;
1754-
1755- __lwp_wd_remove_ticks (& alarm -> alarm );
1756- __lwp_thread_dispatchenable ();
1757- return 0 ;
1758- }
1759-
17601603resetcallback SYS_SetResetCallback (resetcallback cb )
17611604{
17621605 u32 level ;
0 commit comments