Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /* bootstd.h:  Bootloader system call interface
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  * (c) 1999, Rt-Control, Inc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) #ifndef __BOOTSTD_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) #define __BOOTSTD_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) #define NR_BSC 21            /* last used bootloader system call */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) #define __BN_reset        0  /* reset and start the bootloader */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #define __BN_test         1  /* tests the system call interface */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #define __BN_exec         2  /* executes a bootloader image */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) #define __BN_exit         3  /* terminates a bootloader image */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) #define __BN_program      4  /* program FLASH from a chain */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) #define __BN_erase        5  /* erase sector(s) of FLASH */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) #define __BN_open         6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) #define __BN_write        7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) #define __BN_read         8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) #define __BN_close        9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) #define __BN_mmap         10 /* map a file descriptor into memory */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) #define __BN_munmap       11 /* remove a file to memory mapping */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) #define __BN_gethwaddr    12 /* get the hardware address of my interfaces */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) #define __BN_getserialnum 13 /* get the serial number of this board */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) #define __BN_getbenv      14 /* get a bootloader envvar */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) #define __BN_setbenv      15 /* get a bootloader envvar */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) #define __BN_setpmask     16 /* set the protection mask */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) #define __BN_readenv      17 /* read environment variables */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) #define __BN_flash_chattr_range		18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) #define __BN_flash_erase_range		19
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) #define __BN_flash_write_range		20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) /* Calling conventions compatible to (uC)linux/68k
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35)  * We use similar macros to call into the bootloader as for uClinux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) #define __bsc_return(type, res) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) do { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40)    if ((unsigned long)(res) >= (unsigned long)(-64)) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41)       /* let errno be a function, preserve res in %d0 */ \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42)       int __err = -(res); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43)       errno = __err; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44)       res = -1; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45)    } \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46)    return (type)(res); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) } while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) #define _bsc0(type,name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) type name(void) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52)    register long __res __asm__ ("%d0") = __BN_##name; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53)    __asm__ __volatile__ ("trap #2" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54)                          : "=g" (__res) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55)                          : "0" (__res) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56)                          ); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57)    __bsc_return(type,__res); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) #define _bsc1(type,name,atype,a) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) type name(atype a) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63)    register long __res __asm__ ("%d0") = __BN_##name; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64)    register long __a __asm__ ("%d1") = (long)a; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65)    __asm__ __volatile__ ("trap #2" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66)                          : "=g" (__res) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67)                          : "0" (__res), "d" (__a) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68)                          ); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69)    __bsc_return(type,__res); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) #define _bsc2(type,name,atype,a,btype,b) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) type name(atype a, btype b) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75)    register long __res __asm__ ("%d0") = __BN_##name; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76)    register long __a __asm__ ("%d1") = (long)a; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77)    register long __b __asm__ ("%d2") = (long)b; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78)    __asm__ __volatile__ ("trap #2" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79)                          : "=g" (__res) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80)                          : "0" (__res), "d" (__a), "d" (__b) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81)                          ); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82)    __bsc_return(type,__res); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) #define _bsc3(type,name,atype,a,btype,b,ctype,c) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) type name(atype a, btype b, ctype c) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88)    register long __res __asm__ ("%d0") = __BN_##name; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89)    register long __a __asm__ ("%d1") = (long)a; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90)    register long __b __asm__ ("%d2") = (long)b; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91)    register long __c __asm__ ("%d3") = (long)c; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92)    __asm__ __volatile__ ("trap #2" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93)                          : "=g" (__res) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94)                          : "0" (__res), "d" (__a), "d" (__b), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95)                            "d" (__c) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96)                          ); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97)    __bsc_return(type,__res); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define _bsc4(type,name,atype,a,btype,b,ctype,c,dtype,d) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) type name(atype a, btype b, ctype c, dtype d) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)    register long __res __asm__ ("%d0") = __BN_##name; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)    register long __a __asm__ ("%d1") = (long)a; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)    register long __b __asm__ ("%d2") = (long)b; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)    register long __c __asm__ ("%d3") = (long)c; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107)    register long __d __asm__ ("%d4") = (long)d; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)    __asm__ __volatile__ ("trap #2" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)                          : "=g" (__res) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)                          : "0" (__res), "d" (__a), "d" (__b), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)                            "d" (__c), "d" (__d) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)                          ); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)    __bsc_return(type,__res); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) #define _bsc5(type,name,atype,a,btype,b,ctype,c,dtype,d,etype,e) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) type name(atype a, btype b, ctype c, dtype d, etype e) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)    register long __res __asm__ ("%d0") = __BN_##name; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)    register long __a __asm__ ("%d1") = (long)a; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)    register long __b __asm__ ("%d2") = (long)b; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122)    register long __c __asm__ ("%d3") = (long)c; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)    register long __d __asm__ ("%d4") = (long)d; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124)    register long __e __asm__ ("%d5") = (long)e; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)    __asm__ __volatile__ ("trap #2" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)                          : "=g" (__res) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127)                          : "0" (__res), "d" (__a), "d" (__b), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)                            "d" (__c), "d" (__d), "d" (__e) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)                          ); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130)    __bsc_return(type,__res); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) #endif /* __BOOTSTD_H__ */