shithub: p9-stm32-example-os

ref: f801657f77f3923ec2388c25bdcb036c8019ba89
dir: /fns.h/

View raw version
/*	l.s 	*/
void	start(void *sp);

/*	main.c 	*/
void	main(void);
void	idlehands(void);
void	halt(void);
void	reboot(void);

void	confinit(void);
void	userinit(void);
// void	init0(void);

/*	interrupt handlers 	*/
void	_reset_handler(void);
void	_default_handler(void);
void	_hard_fault_handler(void);
void	_bus_fault_handler(void);
void	_usage_fault_handler(void);
void	_mem_manage_handler(void);

void	hard_fault_handler(int);
void	bus_fault_handler(int);
void	usage_fault_handler(int);
void	mem_manage_handler(int);

/*	trap.c	*/
// kprocchild
void	trapinit(void);

/*	thumb2.s extra 	*/
void	introff(void);
void	intron(void);
void	_idlehands(void);
void	coherence(void);

/*	div.s 	*/
void	_div(void);
void	_divu(void);
void	_mod(void);
void	_modu(void);

/*	clock.c 	*/
void	clockinit(void);
void	clockdeinit(void);
void	_wait(ulong);
void	clockcheck(void);
void	systickinit(void);

/*	sub.c 	*/
void	panic(char*, ...);

/*	print.c	*/
// print, sprint defined here
void	serwrite(char*, int);

/*	alloc.c 	*/
void	allocinit(void);
void*	smalloc(ulong);
void*	malloc(ulong);
void*	mallocz(ulong, int);
// void*	mallocalign(ulong size, ulong align, long offset, ulong span);
void	free(void*);
void*	realloc(void*, ulong);
ulong	msize(void*);
void	setmalloctag(void*, ulong);
void	setrealloctag(void*, ulong);
ulong	getmalloctag(void*);
ulong	getrealloctag(void*);
void	allocdump(void);

/*	dma.c 	*/
void	dmainit(void);
void	dmaenable(void);

void	dma_write(DmaChannel, void*, ulong);
ulong	dma_read(DmaChannel, void*, ulong n);
//void	dma_readn(DmaChannel, void, ulong n);

/*	gpio.c 	*/
void	gpioinit(void);
void	afioinit(void);
int		gpio_set(GpioLine, uint);
void	gpio_toggle_n(int);

/*	uart.c 	*/
void	uartinit(void);
void	uart1_putc(int);
int		uart1_getc(void);
void	uart2_putc(int);
int		uart2_getc(void);

/*	operating system	*/

#define waserror()	(up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
#define procsave(p)	/* Save the mach part of the current */
					/* process state, no need for one cpu */

uvlong	fastticks(uvlong *hz);
void	hzclock(Ureg*);

#include	"port/portfns.h"

Proc*	newprog(char *name, void (*func)(void *), void *arg, int flags, uvlong kstacksz);