##// END OF EJS Templates
Huge cleanup, removed old unmaintained boards/libs/archs....
Huge cleanup, removed old unmaintained boards/libs/archs. Changed from building once the lib in small archives to whole rebuilding from sources for each executable, this will allow to use build-time switchs/optimisations. /!\ Simulator broken.

File last commit:

r78:230ad3b6f43f dev_alexis
r105:031afdd64272 tip dev_alexis
Show More
threads.c
97 lines | 2.1 KiB | text/x-c | CLexer
/*------------------------------------------------------------------------------
-- This file is a part of the libuc, microcontroler library
-- Copyright (C) 2013, Alexis Jeandet
--
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-------------------------------------------------------------------------------
-- Author : Alexis Jeandet
-- Mail : alexis.jeandet@member.fsf.org
-------------------------------------------------------------------------------*/
#define __THREAD_PRIVATE__
#include <thread.h>
#include <stdio.h>
/*
For CM4 cf lazy Stacking and context switching form ARM
List of automatically saved registers:
R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13(SP)
R14(LR)
R15(PC)
xPSR
S0 to S15 (if enabled)
List of registers to save:
S16 to S31
*/
#ifndef __mainThreadStackSize__
#define __mainThreadStackSize__ (8*1024)
#endif
char __mainThreadStack__[__mainThreadStackSize__]__attribute__ ((aligned (4)));
thread_t mainThread;
void __cpusavecontext(void* dataspace)
{
}
void __cpurestorecontext(void* dataspace)
{
}
void __initThreading()
{
extern int libuc_main();
thread_t mainThread;
mainThread.func=libuc_main;
mainThread.next=NULL;
mainThread.prev=NULL;
mainThread.priority=0;
mainThread.__stack__=(void*)__mainThreadStack__;
mainThread.stackSize=__mainThreadStackSize__;
}