This is the mail archive of the crossgcc@cygnus.com mailing list for the crossgcc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Using a list of defines like this: #define HARDWARE_REG (*(volatile BYTE *)(0xF000)) is a pretty typical way, another method I use that lends itself well for grouping related, contiguous registers in a structured way, is to define a structure containing the regs, define a pointer to that struct, and initialise the pointer to the apropriate hardware address. e.g. processor with a 16 bit timer register at F000, F001 and an 8 bit timer control and status register at F002, F003: struct cpu_regs { volatile WORD timer_count; BYTE timer_ctl; volatile BYTE timer_status; } struct cpu_regs *io_register = 0xF000; Now you can use the io registers like members of a struct: io_register->timer_count = TIMER_START_COUNT; io_register->timer_ctl = TIMER_CTL_START; while(!io_register->timer_status); -- |\/| |/\| randall@elgar.com |\/| rsl@zanshinsys.com http://www.zanshinsys.com _______________________________________________ New CrossGCC FAQ: http://www.objsw.com/CrossGCC _______________________________________________ To remove yourself from the crossgcc list, send mail to crossgcc-request@cygnus.com with the text 'unsubscribe' (without the quotes) in the body of the message.