GBDK 2020 Docs 4.4.0 API Documentation for GBDK 2020

far_ptr.h
Go to the documentation of this file.
1
13 #ifndef __FAR_PTR_H_INCLUDE
14 #define __FAR_PTR_H_INCLUDE
15
16 #include <types.h>
17 #include <stdint.h>
18
25 #define TO_FAR_PTR(ofs, seg) (((FAR_PTR)seg << 16) | (FAR_PTR)ofs)
26
32 #define FAR_SEG(ptr) (((union __far_ptr *)&ptr)->segofs.seg)
33
39 #define FAR_OFS(ptr) (((union __far_ptr *)&ptr)->segofs.ofs)
40
41 #define FAR_FUNC(ptr, typ) ((typ)(((union __far_ptr *)&ptr)->segfn.fn))
42
65 #define FAR_CALL(ptr, typ, ...) (__call_banked_ptr=ptr,((typ)(&__call__banked))(__VA_ARGS__))
66
69 typedef uint32_t FAR_PTR;
70
73 union __far_ptr {
74 FAR_PTR ptr;
75 struct {
76 void * ofs;
77 uint16_t seg;
78 } segofs;
79 struct {
80 void (*fn)(void);
81 uint16_t seg;
82 } segfn;
83 };
84
85 extern volatile FAR_PTR __call_banked_ptr;
86 extern volatile void * __call_banked_addr;
87 extern volatile uint8_t __call_banked_bank;
88
89 void __call__banked(void);
90
97 uint32_t to_far_ptr(void* ofs, uint16_t seg);
98
99 #endif
__call_banked_addr
volatile void * __call_banked_addr
__call_banked_ptr
volatile FAR_PTR __call_banked_ptr
FAR_PTR
uint32_t FAR_PTR
Definition: far_ptr.h:69
__call_banked_bank
volatile uint8_t __call_banked_bank
to_far_ptr
uint32_t to_far_ptr(void *ofs, uint16_t seg)
__call__banked
void __call__banked(void)
stdint.h
uint32_t
unsigned long int uint32_t
Definition: stdint.h:53
uint8_t
unsigned char uint8_t
Definition: stdint.h:51
uint16_t
unsigned short int uint16_t
Definition: stdint.h:52
__far_ptr
Definition: far_ptr.h:73
__far_ptr::seg
uint16_t seg
Definition: far_ptr.h:77
__far_ptr::fn
void(* fn)(void)
Definition: far_ptr.h:80
__far_ptr::ofs
void * ofs
Definition: far_ptr.h:76
__far_ptr::segfn
struct __far_ptr::@8 segfn
__far_ptr::segofs
struct __far_ptr::@7 segofs
__far_ptr::ptr
FAR_PTR ptr
Definition: far_ptr.h:74